我们在 aws 上有一个 ES 集群,我们有两个节点,每个节点都有一个分片,其中有相同的索引。
我们有先按分数然后按日期按排序顺序返回的文档。
现在返回的分数都相等,日期也相等。
当我们运行相同的查询时,请求之间的文档顺序不同。
有什么办法可以使顺序一致吗?
最佳答案
当所有其他排序键都相等时,elasticsearch 会按照所谓的 index order 对文档进行排序。 ( _doc
) 是文档在索引中出现的顺序。此顺序在主分片和副本分片之间可能不同。为了提高用户结果的一致性,您可以添加一个额外的排序键,该排序键对于每条记录都是唯一的,例如 _uid
field 。
或者,您可以通过使用您的用户 session id 或其用户名作为 preference 将每个用户绑定(bind)到一个特定的分片(如果该分片可用)。 .这样,虽然不同的用户可能仍会看到不同的结果,但只要他们附加到的分片还活着,每个用户都会看到相同的顺序。
关于amazon-web-services - 多节点 Elasticsearch 集群负载均衡器每次返回不同的排名结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38513246/