我需要对ES进行分页搜索调用。我使用_doc
作为排序键,使用search_after
来获取下一页,因为只要每次搜索都一致,我就不会关心订购。但是,我发现返回的对象在每个搜索请求中按不同的顺序排序。在分页的情况下,这实际上会导致问题,因为当打电话到下一页时,我经常会看到我在前一页上看到的相同文档。
我误解了_doc
应该如何使用?如果我想要一致的订购,我的其他选择是什么。
我正在使用ES 5.5
答案 0 :(得分:0)
您可以使用_uid进行排序,但是就内存使用而言,使用_uid进行排序是一项昂贵的操作。请检查此https://github.com/elastic/kibana/issues/11925
答案 1 :(得分:0)
当前文档建议使用每个文档具有唯一值的字段作为平局,这应该与另一个启用了文档值的字段中的_id
字段重复。
请参阅此处的search_after文档,尤其是第一个注释: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html