![](/img/trans.png)
[英]Elasticsearch w/ Spring Data - _local search preference
[英]Using preference _local in elasticsearch
我目前正在为搜索API调整Elasticsearch。 规范是:
当我使用Nginx的Jmeter测试它时,吞吐量约为220 req / s,但是当我指定?preference=_local
它的吞吐量约为320 req / s。 这是非常好的性能改进。 我想问的是:
?preference=_local
实际做什么,以及它如何提高查询性能? ?preference=_local
什么折衷? 查询:
{
"query": {
"multi_match": {
"query": "trump",
"type": "most_fields",
"operator": "and",
"fields": ["title", "content"]
}
},
"sort": {
"published_at": {
"order": "desc"
},
"_score": {
"order": "desc"
}
},
"from": 0,
"size": 20,
"min_score": 1
}
在这种情况下使用_local
首选项就可以了,因为您有两个节点和一个索引副本,这意味着每个节点具有完全相同的数据。
优先级_local
将根据该特定节点的数据运行要发送到节点的查询。 如果该节点没有需要查询的数据,则也会将请求发送到其他节点。
同样,在查询Elasticsearch集群时,您需要通过客户端节点或负载均衡器发送搜索请求,或者您的代码需要同时面向两个节点。 基本上,您希望所有节点都执行“收集器”作业。 这很重要,因为接收搜索请求的节点是唯一一个从所有其他节点收集结果,执行最终搜索和聚合并将结果发送回用户的节点。 因此,获得请求的节点就是正在做更多工作的节点。
在具有_local
首选项的两节点方案中,查询负载平衡甚至更为重要,因为获得请求的那个节点将始终执行所有工作,而另一个将处于空闲状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.