gpt4 book ai didi

elasticsearch - 在 elasticsearch 中使用首选项 _local

转载 作者:行者123 更新时间:2023-11-29 02:53:03 24 4
gpt4 key购买 nike

我目前正在为搜索 api 调整 elasticsearch。规范是:

  • VM 上具有单个索引的 2 节点单集群(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 首选项很好,因为您有两个节点和一个索引副本,这意味着每个节点都具有完全相同的数据。

Preference _local 将运行您发送到节点的查询,在该特定节点的数据上。如果该节点没有需要查询的数据,也会向其他节点发送请求。

此外,在查询 Elasticsearch 集群时,您需要通过客户端节点或负载均衡器发送搜索请求,或者您的代码需要同时针对这两个节点。基本上,您希望所有节点都执行“收集器”工作。这很重要,因为接收搜索请求的节点是唯一从所有其他节点收集结果、执行最终搜索和聚合并将结果发送回用户的节点。因此,收到请求的节点是做更多工作的节点。

在具有偏好_local 的双节点场景中,查询负载平衡更为重要,因为始终获得请求的节点将执行所有工作,另一个节点将处于空闲状态。

关于elasticsearch - 在 elasticsearch 中使用首选项 _local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44109931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com