如何在Elasticsearch中从指定主分片查询数据并识别主分片
仅从Elasticsearch主分片查询数据的解决方案
简便方法:直接使用_primary偏好参数
不用手动识别主分片编号,直接在查询中指定preference=_primary,Elasticsearch会自动将查询路由到每个分片的主分片上,无需关心具体分片编号。修改后的示例代码如下:
GET my_index/_search?preference=_primary { "_source": ["id", "handle"], "size": 10, "query": { "bool": { "filter": [ { "term": { ... } } ] } } }
手动指定主分片编号的方法(按需使用)
如果确实需要指定具体主分片编号,按以下步骤操作:
- 获取索引分片详情:执行以下命令查看索引的分片分布,明确每个主分片的编号:
GET my_index/_settings/_shards
返回结果中,每个分片编号(如0、1)下,标记"primary": true的就是对应编号的主分片。示例返回片段:
{ "my_index": { "shards": { "0": [ { "primary": true, "node": "node-1", ... }, { "primary": false, "node": "node-2", ... } ] } } }
- 指定单个主分片查询:比如要查编号为0的主分片,就用
preference=_shards:0;如果要同时查多个主分片,用逗号分隔编号,如preference=_shards:0,1,2。
注意:手动指定分片编号的方式不够灵活,若后续索引分片配置调整(如扩容分片),之前指定的编号可能失效,推荐优先使用
_primary参数。
内容的提问来源于stack exchange,提问作者Phap Truong
相关产品推荐
相关产品推荐

