赞
踩
之前在对象类型(object)小节中,我们提到假如需要索引字段是对象数组,而不是对象,这时我们需要使用嵌套数据类型。
形如下面的示例数据结构。
{
"group" : "fans",
"user" : [
{
"first" : "John",
"last" : "Smith"
},
{
"first" : "Alice",
"last" : "White"
}
]
}
我们可以user
属性是一个对象集合。这种结构我们在创建映射时该怎么定义呢?
假如user
字段是对象数组字段(嵌套数据类型)
示例如下
#创建映射的参数
PUT example/docs/_mapping
{
"group": {
"type": "text"
},
"user": {
"type": "nested"
"properties": {
"id": {"type": "keyword"},
"name": {"type": "text"},
"age": {"type": "short"}
}
}
}
假如数据结构定义好了之后,我们想要新增一个文档(document),该怎么办?
示例如下
PUT example/docs/12313213123 { "group": "研发组", "user": [ { "id": 1, "name": "张三", "age": 22 }, { "id": 2, "name": "李四", "age": 19 }, { "id": 3, "name": "tom", "age": 21 } ] }
假如我们想对嵌套中的user
的name
属性进行搜索
示例如下
GET examaple/docs/_search { "query": { "nested": { "path": "user", "query": { "bool": { "must": [ { "match": { "user.name": "李四" } } ] } } } } }
注意
由于嵌套文档被索引为单独的文档,因此只能在nested查询。
为具有100个嵌套字段的文档建立索引实际上是为101个文档建立索引,因为每个嵌套文档都被索引为一个单独的文档。为了防止定义不正确的映射,每个索引可以定义的嵌套字段的数量默认为限制为50。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。