【发布时间】:2015-01-22 03:25:23
【问题描述】:
如果多个文档得分相等,是否可以实现elasticsearch搜索结果的可靠分页?
我正在弹性搜索中尝试自定义评分。我尝试的许多评分表达式都会产生许多文档具有相同分数的结果集。每次我尝试时它们似乎都以相同的顺序出现,但可以保证吗?
AFAIU 不能,尤其是在集群中有多个分片的情况下。具有相同分数的文件。给定的 elasticsearch 查询以随机的、不确定的顺序返回,即使底层数据库没有改变(因此分页不可靠),也可以在同一查询的调用之间改变,除非满足以下条件之一:
- 我使用
function_score来保证每个文档的分数都是唯一的(例如,通过使用唯一的数字字段)。 - 我使用
sort并保证排序定义了一个总顺序(例如,如果其他一切都相同,则使用唯一字段作为后备)。
任何人都可以确认(并且可能指向一些参考)吗?
如果我知道只有一个主分片没有任何副本,这会改变吗(请参阅其他类似的问题:Inconsistent ordering of results across primary /replica for documents with equivalent score)?例如。如果我保证有一个分片并且在同一查询的两次调用之间数据库中没有变化,那么该查询将以相同的顺序返回结果?
还有哪些其他选择(如果有)?
【问题讨论】:
标签: elasticsearch pagination scoring