如何查询Elastic Search索引的分区键?有哪些可用查询语句?
Elasticsearch索引分片路由键的确定方法及查询语句
在Elasticsearch中,决定文档分配到哪个分片(即你所说的“分区”)的核心是路由键(routing key),以下是确定它的方法和对应的查询语句:
一、路由键的默认与自定义规则
- 默认规则:如果没有做任何自定义配置,路由键就是文档的
_id,系统通过hash(_routing) % 主分片数计算文档所属分片,此时_routing默认等于_id。 - 自定义规则:
- 索引创建时通过
routing.field指定固定字段作为路由键,所有文档都会基于该字段的值路由到对应分片; - 写入单个文档时手动传入
routing参数,临时指定该文档的路由键。
- 索引创建时通过
二、查询索引的路由配置信息
使用_settings API可以直接获取索引的路由相关配置:
GET /<你的索引名>/_settings
返回结果中,index.routing节点下的字段会明确路由配置:
- 若存在
index.routing.field字段,其值就是索引指定的固定路由字段; - 若没有该字段,则说明索引使用默认的
_id作为路由键。
三、查询单个文档的路由键
如果要确认某篇文档实际使用的路由键,可以在查询文档时加上routing=true参数:
GET /<你的索引名>/_doc/<文档ID>?routing=true
返回结果里的_routing字段值,就是该文档的路由键。
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

