ES中的数据类型学习之ARRAY

Arrays | Elasticsearch Guide [7.17] | Elastic

中文翻译 :Array · Elasticsearch 5.4 中文文档 · 看云

Arrays

In Elasticsearch, there is no dedicated array data type. Any field can contain zero or more values by default, however, all values in the array must be of the same data type. For instance:

  • an array of strings: [ "one", "two" ]
  • an array of integers: [ 1, 2 ]
  • an array of arrays: [ 1, [ 2, 3 ]] which is the equivalent of [ 1, 2, 3 ]
  • an array of objects: [ { "name": "Mary", "age": 12 }, { "name": "John", "age": 10 }]

NOTE

Arrays of objects

Arrays of objects do not work as you would expect: you cannot query each object independently of the other objects in the array. If you need to be able to do this then you should use the nested data type instead of the object data type.

This is explained in more detail in Nested.

主要说了

1.es里没有专用的array类型,实际类型是keyword 或者object类型。

2.es的array只能存相同类型的数据

3.es这里的数组不是真正的数组,如果要用真正的数组,推荐用nested数据类型。

还有一些就不复制粘贴了。直接实战开始

PUT my-index-000001/_doc/1

{

"message": "some arrays in this document...",

"tags": [ "elasticsearch", "wow" ],

"lists": [

{

"name": "prog_list",

"description": "programming list"

},

{

"name": "cool_list",

"description": "cool stuff list"

}

]

}

PUT my-index-000001/_doc/2

{

"message": "no arrays in this document...",

"tags": "elasticsearch",

"lists": {

"name": "prog_list",

"description": "programming list"

}

}

PUT my-index-000001/_doc/2

{

"message": "no arrays in this document...",

"tags": "elasticsearch",

"lists": {

"name": "prog_list",

"description": "programming list"

}

}

查看下映射 GET my-index-000001/_mapping

发现属性实际为keyword 和properties

测试下查询

GET my-index-000001/_search

{

"query": {

"match": {

"tags": "elasticsearch"

}

}

}

发现查出两条数据没有问题。

但是查询 对象中的多个属性的时候就会出现问题

GET my-index-000001/_search

{

"query": {

"bool": {

"must": [

{ "match": { "lists.name": "prog_list" } },

{"match": {"lists.description": "cool stuff list"}

}

]

}

}

}

这个时候就需要用到nested了。

相关推荐
SuperW12 分钟前
linux课程学习二——缓存
学习
白雪讲堂1 小时前
AI搜索品牌曝光资料包(精准适配文心一言/Kimi/DeepSeek等场景)
大数据·人工智能·搜索引擎·ai·文心一言·deepseek
杉之1 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
浩浩kids2 小时前
Hadoop•踩过的SHIT
大数据·hadoop·分布式
qr9j422332 小时前
elasticsearch 如果按照日期进行筛选
大数据·elasticsearch·jenkins
DavidSoCool2 小时前
es分页边界数据重复问题处理
大数据·elasticsearch·搜索引擎
路由侠内网穿透3 小时前
本地部署开源流处理框架 Apache Flink 并实现外部访问
大数据·网络协议·tcp/ip·flink·服务发现·apache·consul
Song3 小时前
JVM 学习计划表(2025 版)
jvm·学习
小杨爱学习zb4 小时前
学习总结 网格划分+瞬态求解设置
笔记·学习·算法
互联网上的猪4 小时前
Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)
笔记·学习·excel