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

elasticsearch的最大可滚动时间

  •  2
  • Hexy  · 技术社区  · 6 年前

    可以为滚动搜索设置的最大可滚动时间是多少?

    文件: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-scroll

    2 回复  |  直到 6 年前
        1
  •  11
  •   jhilden    6 年前

    如果你在问这类问题,你可能没有在ES中使用Scroll来表达你的意图。当您确定需要返回时,您希望使用滚动 全部 匹配记录。

    滚动的最佳用例

    我想从ES中提取1000000条记录以写入CSV文件。这是一个完美的scroll用例。您需要返回1M行,但不希望将它们全部作为数据库中的一个块返回。相反,您可以将它们分为约1000个记录块,将该块写入CSV文件,然后获取下一个块。您的滚动保持活动可以设置为1分钟,您不会有任何问题。

    滚动的错误用例

    用户正在查看前50条记录,并且在将来的某个时候,他们可能希望也可能不希望查看下50条记录。

    对于这样的用例,您希望使用 Search After API

        2
  •  2
  •   Mayur Buragohain Doaa Magdy    6 年前

    最大滚动时间没有一个值适合所有值。

    扫描(&A);滚动的意思是成片扫描大量记录。每个区块的最大值必须通过增量增加获得,直到达到临界值,因为它取决于集群资源、网络延迟和集群负载。

    我们有一个3节点的测试设置,大约有10亿条记录和1 TB的数据。我能够滚动整个索引,滚动大小为5000,超时为5m。然而,这些值有很多超时。通过分析,我们发现滚动超时严重依赖于 cluster load network latency 。因此,我们最终确定了3500大小和4m超时。

    因此,我建议如下-

    • 增量增加大小和超时值,以获得网络的最大值。
    • 获得最大值后,将其降低一个级别,以适应由于群集负载而导致的故障;延迟