最大可滚动时间用于Elasticsearch



可以将最大滚动时间设置为滚动搜索?

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

如果您问这样的问题,您可能不会在ES中使用滚动。当您知道需要返回 asl 匹配记录时,您需要使用滚动。

滚动的绝佳用例

我想从ES中撤回1,000,000个记录,以写入CSV文件。这是滚动的完美用例。您需要返回1M行,但不想从数据库中返回所有零件。取而代之的是,您可以将它们块分成〜1000个记录块,将块写入CSV文件,然后获取下一个块。您的滚动保持生命的存活时间可以设置为1分钟,您将不会有任何问题。

滚动的坏例

用户正在查看前50个记录,并且在将来的某个时候,他们可能想或可能不想查看接下来的50个记录。

对于这样的用例,您想在API

之后使用搜索

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

扫描&滚动旨在通过块中的大量记录进行扫描。每个块的最大值必须通过增量增加,直到您达到破坏,因为它取决于群集资源,网络延迟和集群负载。

我们有一个3个节点测试设置,其中约有10亿记录和1 TB的数据。我能够滚动浏览整个索引,滚动尺寸为5000和超时5m。但是,这些值有很多超时。从我们的分析中,我们观察到滚动超时在很大程度上取决于cluster loadnetwork latency。因此,我们终于解决了3500大小和4m超时。

所以我将推荐以下 -

  • 逐渐增加大小和超时值以获取网络的最大值。
  • 拥有最大值后,将其减少一个缺口,以适应因集群负载而导致的故障&潜伏期

最新更新