对于查询中的给定日期范围和search_after参数,我能够成功提取相关结果。如何确定我是否在给定日期范围的搜索结果的末尾,并且我不必继续使用search_after参数进行查询。
答案 0 :(得分:2)
有一个非常酷的“技巧”,它不涉及任何额外的查询或对结果总数的了解:
假设您的页面大小为 20。与其要求 elasticsearch 提供 20 个结果,不如要求它提供 21 个。
如果您返回 21 个结果,请仅使用其中的前 20 个。但是您现在知道下一个查询至少会多出一个结果(如果您将第 20 个结果的 sort
值用于 search_after
参数,而不是第 21 个!)。
如果您得到 20 个或更少的结果,则不会有其他结果。
这个 github 问题提供了更多细节,说明为什么 elasticsearch 没有开箱即用的功能:https://github.com/elastic/elasticsearch/issues/22364
答案 1 :(得分:0)
您可以一直查询直到它开始返回零结果,或者它确实返回总数,因此您可以跟踪已检索的总数,并在达到总数后停止搜索。 (我将两者结合在一起)