我最近编写了一个对Elasticsearch进行查询的应用程序。我一直使用“ from”和“ size”字段来处理分页。我今天意识到,这不适用于大于10,000的数据集。
我已经研究了scroll和search_after,尽管两者都有意义,但我不确定我可以在应用程序中使用哪个。这是我的要求
答案 0 :(得分:1)
是的,search_after
似乎是针对您的用例的可能解决方案,尽管您需要执行建议的here以实现 BACK 分页
答案 1 :(得分:1)
另一种解决方案是增加索引的 max_result_window 属性。这样,您就可以使用 from 和 size 来获取更多数据。
请注意,由于结果的大小取决于 from + size ,因此会增加堆内存的使用量和获取结果所需的时间。它首先获取 from + size 结果并将其存储在内存中,然后从 from 数据量中返回。因此,更多的 from + size ,更多的堆内存使用和更多的时间来获取结果。
在documentation中说:
index.max_result_window 搜索到此索引的最大值为+大小。默认值为10000。搜索请求占用的堆内存和时间与+大小成正比,因此会限制该内存。