elasticsearch 结果得分相等时Elasticsearch中的分页,elasticsearch,pagination,scoring,elasticsearch,Pagination,Scoring" /> elasticsearch 结果得分相等时Elasticsearch中的分页,elasticsearch,pagination,scoring,elasticsearch,Pagination,Scoring" />

elasticsearch 结果得分相等时Elasticsearch中的分页

elasticsearch 结果得分相等时Elasticsearch中的分页,elasticsearch,pagination,scoring,elasticsearch,Pagination,Scoring,如果多个文档的分数相等,是否可以实现elasticsearch搜索结果的可靠分页 我正在尝试elasticsearch中的自定义评分。我尝试的许多评分表达式都会生成许多文档分数相等的结果集。每次我尝试时,它们的顺序似乎都是一样的,但能保证吗 AFAIU不能,尤其是如果集群中有多个碎片。wrt分数相等的文件。给定的elasticsearch查询以随机、不确定的顺序返回,在同一查询的调用之间可能会发生变化,即使基础数据库没有变化(因此分页不可靠),除非以下情况之一成立: 我使用function_sc

如果多个文档的分数相等,是否可以实现elasticsearch搜索结果的可靠分页

我正在尝试elasticsearch中的自定义评分。我尝试的许多评分表达式都会生成许多文档分数相等的结果集。每次我尝试时,它们的顺序似乎都是一样的,但能保证吗

AFAIU不能,尤其是如果集群中有多个碎片。wrt分数相等的文件。给定的elasticsearch查询以随机、不确定的顺序返回,在同一查询的调用之间可能会发生变化,即使基础数据库没有变化(因此分页不可靠),除非以下情况之一成立:

  • 我使用
    function_score
    来保证每个文档的分数是唯一的(例如,通过使用唯一的数字字段)
  • 我使用
    排序
    并保证排序定义了一个总顺序(例如,如果所有其他条件相同,则使用唯一字段作为回退)
  • 有人能确认一下吗(可能指一些参考资料)

    如果我知道只有一个主碎片没有任何副本(请参阅其他类似的查询:),这种情况会改变吗?例如,如果我保证在同一查询的两次调用之间有一个碎片,并且数据库中没有变化,那么该查询将以相同的顺序返回结果


    还有什么其他选择(如果有的话)?

    我最后在可能出现相同分数的情况下使用了额外的排序-例如按产品类别搜索。此附加排序可以是id、创建日期或类似的。设置为2台服务器、3个碎片和1个副本。

    这是推荐的方法,首先按
    \u分数排序,然后再按一些辅助的、打破平局的字段进行排序。@LeeH如何添加具有\u id的平局打破者?