amazon-web-services - 多节点 Elasticsearch 集群负载均衡器每次返回不同的排名结果

标签 amazon-web-services elasticsearch

我们在 aws 上有一个 ES 集群,我们有两个节点,每个节点都有一个分片,其中有相同的索引。
我们有先按分数然后按日期按排序顺序返回的文档。

现在返回的分数都相等,日期也相等。

当我们运行相同的查询时,请求之间的文档顺序不同。

有什么办法可以使顺序一致吗?

最佳答案

当所有其他排序键都相等时,elasticsearch 会按照所谓的 index order 对文档进行排序。 ( _doc ) 是文档在索引中出现的顺序。此顺序在主分片和副本分片之间可能不同。为了提高用户结果的一致性,您可以添加一个额外的排序键,该排序键对于每条记录都是唯一的,例如 _uid field 。

或者,您可以通过使用您的用户 session id 或其用户名作为 preference 将每个用户绑定(bind)到一个特定的分片(如果该分片可用)。 .这样,虽然不同的用户可能仍会看到不同的结果,但只要他们附加到的分片还活着,每个用户都会看到相同的顺序。

关于amazon-web-services - 多节点 Elasticsearch 集群负载均衡器每次返回不同的排名结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513246/

相关文章:

node.js - 在来自 AWS lambda Node JS 的 http 响应 header 中设置 Cookie

amazon-web-services - 我如何真正将 docker-compose.yml 部署到云端?

amazon-web-services - 安全组和网络接口(interface)的 AWS CloudFormation 错误,参数组合无效

amazon-web-services - 在 AWS 中,如何将 API key 添加到我的 API?

java - 在 Elastic Search 中设置动态日期格式

php - Elasticsearch 中的巨大术语错误

elasticsearch - ElasticSearch 2.x:more_like_this查询和嵌套对象

docker - kibana opendistro 无法连接到 Docker 上的 ElasticSearch open distro 容器

sorting - 基于脚本的 Elasticsearch 日期字段排序

node.js - AWS CodeDeploy AfterInstall 脚本正在从代码部署代理目录运行