我想随机跳转到Elasticsearch结果的页面。在Elasticsearch中分页有三种方法:
我知道无论如何,Elasticsearch都会顺序读取数据。假设我要获得第99页,那么elastic将读取所有98个结果以得到第99页的结果。
我可以做一件事,即减少我将在目标数据之前顺序获取的数据,在这种情况下,我将减少返回的98页数据,而对于第99页,我将获取完整数据。
我的主要问题是:“如果我没有内存问题,那么哪种方法可以更快地顺序获取98页呢?” (search_after或滚动)
如果我使用滚动条,则每次使用后都会清除它。
答案 0 :(得分:1)
如果您没有内存问题,那么最简单的选择是将索引设置 index.max_result_window 从10000增加到所需的数字。
答案 1 :(得分:0)
基于基准标记(实现了search_after和滚动,然后进行了测试),我发现对于随机分页,滚动要比search_after更好。
答案 2 :(得分:0)
Scroll API是对大型记录进行分页的最佳选择。我已经实现了超过40万条记录的滚动API分页。