繁体   English   中英

在Elasticsearch中使用首选项_local

[英]Using preference _local in elasticsearch

我目前正在为搜索API调整Elasticsearch。 规范是:

  • 2个节点在VM上具有单个索引的单个群集(2核2GB RAM)
  • 5个碎片
  • 1个复制
  • 使用nginx进行负载均衡

当我使用Nginx的Jmeter测试它时,吞吐量约为220 req / s,但是当我指定?preference=_local它的吞吐量约为320 req / s。 这是非常好的性能改进。 我想问的是:

  1. ?preference=_local实际做什么,以及它如何提高查询性能?
  2. 使用?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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM