Elasticsearch-查询超过1万的数据

时间:2018-10-17 21:27:16

标签: elasticsearch pagination

我最近编写了一个对Elasticsearch进行查询的应用程序。我一直使用“ from”和“ size”字段来处理分页。我今天意识到,这不适用于大于10,000的数据集。

我已经研究了scroll和search_after,尽管两者都有意义,但我不确定我可以在应用程序中使用哪个。这是我的要求

  1. 我希望每页显示1000条结果
  2. 我希望能够点击 NEXT 并查看接下来的1000条结果
  3. 我想单击后退并查看以前的1000条结果,我认为滚动不会允许我这样做。

2 个答案:

答案 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。搜索请求占用的堆内存和时间与+大小成正比,因此会限制该内存。