jhi*_*den 7

如果你问这类问题,你可能不会在ES中使用Scroll它的用途.当您确定需要返回所有匹配的记录时,您希望使用滚动.

Scroll的绝佳用例

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

Scroll的用例不好

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

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

  • TTL 值是**之间**请求的超时时间。所以如果下载 33M 记录需要 10 分钟,但每个块需要 20 秒,那么 1 分钟超时是完美的。如果您在 2-3M 记录后看到超时,那是因为在您的代码中某处需要超过 1 分钟 ** 之间** 请求。还请记住,您需要再次指定 TTL 的每个块请求。最后一件事,100 的块大小非常低,我会从 1000-5000 开始。 (3认同)
  • 我敢说您的滚动继续代码存在问题。设置滚动的时间可能是几秒钟,但随后对下一个块的每个后续请求都将在恒定时间内发生。你确定你不是每次都创建一个新的卷轴(只是猜测)? (2认同)