nested类型是object数据类型的一个专门版本,它允许对对象数组进行索引,以便它们可以相互独立地查询。
当用大的任意键值集合键入键值对时,可以考虑将每个键值对建模为具有键和值字段的自己嵌套文档。相反,考虑使用扁平化数据类型,它将整个对象映射为单个字段,并允许对其内容进行简单搜索。嵌套文档和查询通常比较昂贵,因此在这个用例中使用扁平化数据类型是一个更好的选择。
对象阵列的展平方式
Elasticsearch没有内部对象的概念。因此,它将对象层次结构展平为字段名和值的简单列表。例如:
PUT my-index-000001/_doc/1
{
"group" : "fans",
"user" : [ (1)
{
"first" : "John",
"last" : "Smith"
},
{
"first" : "Alice",
"last" : "White"
}
]
}
(1)用户字段被动态添加为object类型的字段。
以前的文档将在内部转换为更像以下内容的文档:
{
"group" : "fans",
"user.first" : [ "alice", "john" ],
"user.last" : [ "smith", "white" ]
}
user.first和user.last字段被展平为多值字段,alice和white之间的关联将丢失。此文档与al