在Elasticsearch中增加Scroll API的大小时,我应该考虑哪些注意事项?

时间:2017-06-07 10:08:19

标签: elasticsearch

我目前正在使用Elasticsearch的{​​{3}},并希望使用它来获取大量数据并对其进行一些手动处理。处理由外部库执行,而不是可以轻松包含在Scroll API中的类型。

虽然目前看起来效果很好,但我想知道在微调滚动大小以执行这种处理形式时我应该考虑哪些因素。快速观察似乎表明增加滚动大小将减少操作的延迟。虽然我怀疑更大的卷轴大小通常会降低吞吐量,但我不知道这个假设是否正确。另外,我不知道是否还有其他任何我现在没想到的后果。

总而言之,我的问题是:在为每个获得的批次处理结果的情况下,更改Elasticsearch的滚动大小会对性能产生什么影响?

提前致谢!

1 个答案:

答案 0 :(得分:0)

一个(也是我唯一知道的)考虑因素是能够足够快地处理批处理以不释放滚动上下文(由?scroll=X参数控制)。

假设您将使用查询中的所有数据,那么应根据网络和第三方应用程序性能调整滚动。即。

  • 如果您的应用可以按流式处理数据,则更大的块更好
  • 如果您的应用程序批量处理数据(首先等待完整的ES响应),批量大小的上限应保证处理时间<滚动发布时间
  • 如果您在较差的网络环境中工作,较少的批处理大小可以更好地处理丢弃的连接/重试的开销
  • 一般来说,更大的批次显然更好,因为它消除了一些网络/ ES cpu开销