查询特定的弹性搜索节点

时间:2016-03-24 09:56:59

标签: elasticsearch

我使用Elastic Search来存储大型文档。我希望在实际数据本地运行专门的大数据查询(在ES / Lucene中无法实现)。我的意思是,我不想通过网络拖动数据,只能把它丢掉一半。

我的解决方案是在每个节点上我将有一个Java进程来查询localhost ES实例。

我的问题是,是否可以在特定的ES节点上进行查询,只查询它作为主节点的分片,而不是查询其他节点?

1 个答案:

答案 0 :(得分:2)

您可以使用elasticsearch preferences来控制执行搜索请求的分片的首选项。

curl localhost:9200/_search?preference=xyzabc123 -d '
{
    "query": {
        "match": {
            "title": "elasticsearch"
        }
    }
}'

<强> _primary

该操作将仅在主分片上执行。

<强> _primary_first

操作将在主分片上执行,如果不可用(故障转移),将在其他分片上执行。

<强> _replica

该操作将仅在副本分片上执行。

<强> _replica_first

该操作将仅在副本分片上执行,如果不可用(故障转移),将在其他分片上执行。

<强> _local

如果可能,操作将优先在本地分配的分片上执行。

<强> _only_node:XYZ

将搜索限制为仅在具有提供的节点ID的节点上执行(在本例中为xyz)。

Reference