代码之家  ›  专栏  ›  技术社区  ›  TechnocratSid

在ElasticSearch中,哪一个更适合滚动或搜索以模拟随机分页?

  •  4
  • TechnocratSid  · 技术社区  · 8 年前

    我想随机跳转到ElasticSearch的结果页面。在ElasticSearch中有三种分页方法:

    • 从/尺寸 -我不能使用这个,因为最大深度限制为10000。
    • 滚动API -我可以使用它,但它有一个内存使用的成本(保持搜索上下文活着)。
    • 搜索后 -我也可以使用这个,即使它比卷轴便宜,因为它是无状态的。

    我知道不管怎样,ElasticSearch会按顺序读取数据。假设我想得到第99页,那么Elastic将读取所有98个结果,得到第99页。

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

    我的主要问题是“如果我没有记忆问题,那么哪种方法能更快地顺序获得98页呢?”(搜索或滚动)

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

    3 回复  |  直到 8 年前
        1
  •  1
  •   Adam T    8 年前

    如果你没有记忆问题 ,则最简单的选项是增加索引设置 index.max_result_窗口 从10000到您需要的号码。

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

        2
  •  0
  •   TechnocratSid    8 年前

    基于台架标记(实现了SexChuxStand和ScLink然后测试),我发现滚动页比SqChype更好地进行随机分页。

        3
  •  0
  •   Rachita    8 年前

    滚动API是对海量记录进行分页的最佳选择。我已经实现了超过4 LaKHS记录的滚动API分页。