gpt4 book ai didi

elasticsearch - 同一查询的不同 Elasticsearch 结果

转载 作者:行者123 更新时间:2023-11-29 02:46:08 26 4
gpt4 key购买 nike

我已经为 Elasticsearch 设置了 1 个集群和 4 个节点。每个索引的分片数:1;每个索引的副本数:3

当我多次调用像下面这样的简单查询时,我得到了不同的结果(不同的总命中率和不同的前 10 个文档):

http://localhost:9200/index_name/_search?q=term

每个分片上的数据不同?我喜欢让所有碎片都是最新的。我能做什么?

这是/_cluster/health 的结果:

{
"cluster_name" : "secret",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 4,
"number_of_data_nodes" : 4,
"active_primary_shards" : 24,
"active_shards" : 96,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}

作为临时解决方案,我通过 Ruby gem tire 重建索引:ModelName.rebuild_index

但我需要一个长期的解决方案。

最佳答案

我们遇到了类似的问题,结果证明是因为 Elasticsearch 在搜索时会在不同的分片之间进行轮询。由于 ES handles deleted documents 的方式索引略有不同,每个分片返回略有不同的 _score在索引中。在我们的例子中,这意味着相似的结果通常在结果顺序中略低或略高,并且,当与分页结合使用时(在搜索查询中使用 fromsize)这意味着同样的结果出现在两个不同的“页面”上,或者根本没有出现在不同的页面上。

我们找到了一个 Elasticsearch article关于一致的评分,这非常巧妙地解释了这一点并实现了 preference parameter通过查询相同的分片来确保我们始终为特定搜索获得相同的分数:

http://localhost:9200/index_name/_search?q=term&preference=blablabla

我们也考虑过使用排序,但 Elasticsearch 通过内部 Lucene 文档 ID 对具有相同分数的结果进行排序,确保具有相同分数的结果始终以相同的顺序返回。

关于elasticsearch - 同一查询的不同 Elasticsearch 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285204/

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