ElasticSearch-query-搜索选项
2025-01-22 08:19:30 572 字
This post is also available in English and alternative languages.
DSL 使用格式
ElasticSearch版本:6.5.0(点击跳转官方文档)
ElasticSearch 查询搜索选项
1. preference
elasticsearch 搜索时,可以使用 preference参数来指定分片查询的优先级。
可以通过 preference参数 来控制搜索时查询的分片。
如果不设置该参数,查询会在所有有效的主分片以及副本分片间随机。
通过preference配置,可以有更多的选择定制,比如可以只查询主分片或只查询副本分片等…
不过需要注意,大部分情况,不需要使用preference配置,除非一些特殊情况,如 主分片不可读、主分片未分配等,可以读取指定正常分片的数据。
相关参数:
参数 | 含义 |
---|---|
_primary | 只查询主分片,不管有多少个副本,只对主shard进行检索(这种场景可以用在所有副本不可用的时候,强制读取主分片数据) |
_primary_first | 优先读取主分片,如果主分片无效或者不可用,则会读取其他分片 |
_replica | 只查询副本分片 |
_replica_first | 优先查询副本分片,如果副本分片无效或不可用,就查询其他的分片 |
_local | 尽可能在本地分片执行查询,不跨网络 |
_prefer_nodes:abc,xyz | 在指定的节点id上执行查询 |
_shards:2,3 | 查询指定分片上的数据,此外这种写法还可以和前面的用法组合,如:_shards:2,3 |
_only_nodes:abc*,x*yz,… | 限制在特定的node上执行操作 |
Custom (string) value | 自定义 |
1 | GET /testdata/data/_search?preference=_local |
Java API 使用
1 | public void test_preference(String index, String type, String id, String fieldName, Object value) { |