20

有两个对象:人和财物。我想指定一个属于特定人的 _parent。ElasticSearch 通过 _parent 映射提供了这种能力。但是,我发现的文档和大多数示例都是在 SAME 索引中执行此操作的。

但是,如果我有一个人类索引和一个财物索引,我想知道我是否能够指定跨索引的父关系。初步测试似乎指向“否”。

此外,我的理论是你不能这样做,因为它会导致人类总是在不同的碎片上作为归属(不同的索引,不同的碎片)。我们从文档中知道,人类 id 用于将孩子(在索引时)路由到与人类相同的分片。这是为了提高效率(在内存连接、往返等中)。但这不可能发生,因为我们完全在谈论不同的分片。

问题 #1:有人知道是否可以跨索引指定 _parent 吗?

如果是这样,

问题#2:我提到的路由问题是如何在内部解决的?

4

2 回答 2

14

你说“不同的索引,不同的分片”是正确的——这意味着问题 #1 的答案是否定的。这样一来,#2就无法回答了。

于 2013-08-14T05:03:53.807 回答
2

2020 年更新 - ElasticSearch 7.8

如文档链接中所述https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html

The join data type is a special field that creates parent/child relation within documents of the same index.

这意味着父/子都必须在相同的索引中。

于 2020-07-29T14:44:29.217 回答