我使用Elastic Search来存储大型文档。我希望在实际数据本地运行专门的大数据查询(在ES / Lucene中无法实现)。我的意思是,我不想通过网络拖动数据,只能把它丢掉一半。
我的解决方案是在每个节点上我将有一个Java进程来查询localhost ES实例。
我的问题是,是否可以在特定的ES节点上进行查询,只查询它作为主节点的分片,而不是查询其他节点?
答案 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)。