scroll API对节点的CPU利用率有什么影响? ES version 6.2
上的滚动API的CPU使用率很高。
即使查询一次完成以获取所有数据,然后使用scroll_id
来获取数据,我们仍会遇到CPU高峰。
还将缓存结果存储在哪里?在内存还是磁盘上?
答案 0 :(得分:0)
使用后,应清除滚动“指针”。
当滚动超时达到 被超过。但是,如前所述,保持卷轴打开是有代价的 在上一节中,因此滚动条应明确清除为 一旦清除滚动不再使用滚动 API:
如描述here
通常,后台合并过程通过合并来优化索引 合并较小的细分以创建新的较大细分, 较小的段将被删除。此过程在 滚动,但开放的搜索上下文可防止旧段 仍在使用中被删除。这就是Elasticsearch的方式 能够返回初始搜索请求的结果, 不管随后对文档进行的更改。
因此,如果您了解得很好,就不会有缓存。只是冻结了查询所针对的细分,直到滚动过期。由于段在Lucene中是不可变的,因此可以确保您获得一致的结果,并且可以滚动创建滚动时存在的所有数据。但是缺点是只要您的滚动“指针”存在,目标句段将保持打开状态而不被删除。
因此,打开的段的数量将继续增加,并且必要的文件处理程序也将增加。因此,在广泛的查询中,尤其是如果您同时在建立索引,可能会导致性能问题。 自从建立索引以来,您创建了许多小片段,这些小片段应在以后合并,但是如果对它们进行滚动查询,它们将无法完全合并和删除。
您是否连续索引并且滚动持续时间有多长?