使用来自 Elastic Search API 的 search_after 参数结束搜索结果

crk*_*atz 6 elasticsearch

对于查询中的给定日期范围并使用 search_after 参数,我能够成功提取相关结果。我如何确定我是否处于给定日期范围的搜索结果的末尾,并且我不必继续使用 search_after 参数进行查询。

mih*_*ihi 5

有一个非常酷的“技巧”,它不涉及任何额外的查询或结果总数的知识:

假设您的页面大小为 20。不要向 elasticsearch 请求 20 个结果,而是向其请求 21 个结果。

  • 如果您返回 21 个结果,则仅使用其中的前 20 个。但您现在知道下一个查询将至少再有一个结果(如果您使用sort第 20 个结果的值作为search_after参数,而不是第 21 个结果!)。

  • 如果您获得 20 个或更少的结果,则不会有其他结果。

这个 github 问题提供了更多详细信息,说明为什么 Elasticsearch 没有开箱即用的此功能: https: //github.com/elastic/elasticsearch/issues/22364


Car*_*arl 3

您可以继续查询,直到它开始返回零结果,或者它确实返回总数,这样您就可以跟踪已经检索了多少结果,并在达到总数后停止搜索。(我将两者结合起来)