【问题标题】:Elasticsearch parent-child relationship scalingElasticsearch 父子关系伸缩
【发布时间】:2017-07-13 10:38:18
【问题描述】:

在浏览有关父子关系的 elasticsearch 文档时,我发现了这一行,但我不确定。

父文档及其所有子文档必须位于同一个分片上。

用例:

  • 我在父子关系中有一个 Elasticsearch 索引,有两种类型 公司[父] 和雇员[子]
  • 要索引的记录在这些模式中 1 个父级有超过 100 个子级。
  • 索引的体积很大,所以我们需要将它们分片到多个系统中

根据声明,由于我们跨多个系统进行分片,因此父子节点和子节点都驻留在同一个分片中,因此父子节点可能存在于不同的分片中。

如果是这样,如何避免它们?如果不是请解释一下?

【问题讨论】:

    标签: elasticsearch parent-child


    【解决方案1】:

    每个文档都使用指向某个分片的_routing 字段。阅读有关路由here 的更多信息。

    用于 _routing 的默认值是文档的 _id 或文档的 _parent ID(如果存在)。

    这意味着默认情况下,您的所有子文档都将与其父文档位于同一个分片上。
    您的情况非常简单,因此使用默认值时,父母和孩子不可能驻留在不同的分片中。

    但是如果关系是祖父关系或者更复杂的关系,则需要手动设置路由。更多详情here

    【讨论】:

    • 感谢您的信息。目前这种关系仅限于父子关系,因此默认值应该有效。
    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多