【问题标题】:Which is better scrolls or search_after in elasticsearch to simulate random pagination?在 elasticsearch 中哪个更好的滚动或 search_after 来模拟随机分页?
【发布时间】:2018-07-04 14:53:01
【问题描述】:

我想随机跳转到 elasticsearch 的结果页面。 elasticsearch中分页的三种方式:

  • from/size - 由于最大深度限制为 10000,我无法使用它。
  • scroll API - 我可以使用它,但它有与之相关的内存使用成本(保持搜索上下文活动)。
  • search_after - 我也可以使用它,即使它比卷轴便宜,因为它是无状态的。

我知道无论如何,Elasticsearch 都会顺序读取数据。假设我想获得第 99 页,那么 elastic 将读取所有 98 个结果以获得第 99 个结果。

我可以做一件事,即减少我将在目标数据之前依次获取的数据,在这种情况下,我将减少 98 页返回的数据,而对于第 99 页,我将获得完整的数据。

我的主要问题是“如果我没有内存问题怎么办,那么哪种方法可以更快地顺序获取 98 页?” (搜索后或滚动)

如果我使用卷轴,我会在每次使用后清除它。

【问题讨论】:

    标签: elasticsearch pagination


    【解决方案1】:

    如果您没有内存问题,那么最简单的选择是将索引设置 index.max_result_window 从 10000 增加到您需要的数字。

    https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#dynamic-index-settings

    【讨论】:

    • 您好,谢谢您的回答。但我一直在寻找的是“什么是更好的 search_after 或滚动”?我不打算使用 from/size。
    【解决方案2】:

    Scroll API 是大型记录分页的最佳选择。我已经为超过 40 万条记录实现了滚动 API 分页。

    【讨论】:

      猜你喜欢
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 2012-04-05
      • 2016-07-18
      相关资源
      最近更新 更多