Elasticsearch——Arrays字段类型
程序员文章站
2022-07-09 15:37:55
...
在Elasticsearch中,没有专用的数组数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值必须是相同的数据类型。例如:
- 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 }
]
Arrays of objects
对象数组不能像预期的那样工作:不能独立于数组中的其他对象查询每个对象。如果需要能够做到这一点,那么应该使用嵌套数据类型(nested)而不是对象数据(object)类型。
动态添加字段时,数组中的第一个值确定字段类型。所有后续值必须具有相同的数据类型,或者至少可以将后续值强制为相同的数据类型。
不支持混合数据类型的数组:[10,“某些字符串”]
数组可能包含空值,这些值被配置的空值替换或完全跳过。空数组[]被视为缺少字段 — 没有值的字段。
要在文档中使用数组,无需预先配置任何内容,它们受到开箱即用的支持:
PUT my-index-000001/_doc/1
{
"message": "some arrays in this document...",
"tags": [ "elasticsearch", "wow" ], (1)
"lists": [ (2)
{
"name": "prog_list",
"description": "programming list"
},
{
"name": "cool_list",
"description": "cool stuff list"
}
]
}
PUT my-index-000001/_doc/2 (3)
{
"message": "no arrays in this document...",
"tags": "elasticsearch",
"lists": {
"name": "prog_list",
"description": "programming list"
}
}
GET my-index-000001/_search
{
"query": {
"match": {
"tags": "elasticsearch" (4)
}
}
}
(1)标记字段作为字符串字段动态添加。
(2)列表字段作为对象字段动态添加。
(3)第二个文档不包含数组,但可以索引到相同的字段中。
(4)查询在标记字段中查找elasticsearch,并匹配这两个文档。
推荐阅读
-
【配置属性】—Entity Framework 对应表字段的类型的设定配置方法
-
mssql查找备注(text,ntext)类型字段为空的方法
-
namevaluepair用法报文格式(java反射判断字段类型)
-
将数据库某种类型的字段更新为另一种类型
-
Android获取arrays.xml里的数组字段值实例详解
-
比较详细的MySQL字段类型说明
-
SQLSERVER查询锁表,阻塞,使用表名查询存储过程,行数,表字段类型等常规查询实例讲解
-
JavaScript转换数据库DateTime字段类型方法
-
java sqlserver text 类型字段读取方法
-
ElasticStack学习(十):深入ElasticSearch搜索之QueryFiltering、多/单字符串的多字段查询