是否有可能找到文档所在的elasticsearch分片?

时间:2015-04-15 16:59:01

标签: elasticsearch parent-child sharding

我在调试父子关系查询时遇到问题。我想知道调试问题的方法,而不是简单地发布我的映射,数据,查询,并询问有什么不对(但我保留最终这样做的权利!)。

为此,一个开始就是检查我的孩子和相关父母是否在同一个分片上。我不相信我的映射,并且我不想使用 shard = hash(routing)%number_of_primary_shards 来计算理论上文档的碎片。我想要一个返回明确答案的查询。

2 个答案:

答案 0 :(得分:5)

在您的查询中,您可以启用explain标记,它将告诉您每个文档的位置来自哪个分片和节点。 您可以按如下方式查找示例查询 -

{
  "explain": true,
  "query": {
    "match_all": {}
  }
}

除了docID,索引名称和类型名称,它还将发出节点ID和分片ID。

您可以找到有关使用说明API here的示例。

答案 1 :(得分:1)

要对此进行调试,您根本不必检查分片和节点标识符。

您所要做的就是确保子文档的_parent和/或_routing字段与父文档的id匹配。使用/_search?pretty&fields=_parent,_routing&_source=true显示这些字段。

要查找具有特定_routing_parent ID的文档,请使用/_search?pretty&fields=_parent,_routing&_source=true&q=id:123 OR _routing:123 OR _parent:123这将找到父文档子文档。