首页 > 解决方案 > Elasticsearch如何嵌套对象连接到父文档

问题描述

我想了解获取包含嵌套文档的父文档的成本。

在内部,嵌套对象将数组中的每个对象索引为单独的隐藏文档,这意味着每个嵌套对象都可以独立于其他对象进行查询......

我在 ES 文档中找不到嵌套文档如何与它的父级相关的解释。父文档是否持有nested ojbect _id,当我们获取父文档时,它只是通过 id 找到嵌套对象的来源,并在结果中将该对象替换为 id 吗?

标签: elasticsearchnested

解决方案


嵌套对象的总体思路如下 - 而不是依赖 ids 作为父子方法加入,而是利用文档的逻辑组织

每个嵌套对象都写在父文档之前:

NESTED_DOC11 NESTED_DOC12 PARENT_DOC1 NESTED_DOC21 NESTED_DOC22 PARENT_DOC2

这是一个聪明的技巧,它一直被用来对嵌套对象进行有效的查询,而无需通过 id 进行大量查找。

但是,这意味着一些限制 - 例如,如果不重新索引整个“块”,您将无法更新/删除/添加嵌套文档

关于这种方法的更多信息


推荐阅读