【问题标题】:Elasticsearch sorting by _doc with pagination using search_after does not maintain order_doc 使用 search_after 进行分页的 Elasticsearch 排序不保持顺序
【发布时间】:2018-06-04 02:59:33
【问题描述】:

我需要对 ES 进行分页搜索调用。我使用_doc 作为排序键,使用search_after 获取下一页,因为我不关心排序,只要每次搜索时都保持一致即可。但是,我发现返回的对象在每个搜索请求中都以不同的顺序排序。在分页的情况下,这实际上会导致问题,因为在调用获取下一页时,我经常看到与在前一页中看到的相同的文档。

我是否误解了应该如何使用_doc?如果我想要一致的排序,我还有什么其他选择。

我正在使用ES 5.5

【问题讨论】:

标签: sorting elasticsearch pagination elasticsearch-5


【解决方案1】:

当前文档建议使用每个文档具有一个唯一值的字段用作决胜局,这应该是另一个启用了文档值的字段中的 _id 字段的副本。

请参阅此处的 search_after 文档,特别是第一个注释: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html

【讨论】:

    【解决方案2】:

    您可以使用 _uid 进行排序,但使用 _uid 进行排序在内存使用方面是一项昂贵的操作。请检查此https://github.com/elastic/kibana/issues/11925

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-04
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2021-04-15
      相关资源
      最近更新 更多