elasticsearch设置refresh_interval-1的思考

设置refresh_interval-1的思考

官方相关介绍:https://www.elastic.co/guide/en/elasticsearch/reference/5.x/indexing-buffer.html


疑问:
假如refresh_interval设置为-1,无法进行refresh操作,导数据岂不是一直在内存里?内存不就炸了?


带着这个疑问,我跟了一下代码。

elasticsearch设置refresh_interval-1的思考

  1. 在一个index请求,处理完成之后会去调用checkVersionMapRefresh方法,根据versionMap的大小判断是否需要进行refresh操作。

  2. 缓冲区满的时候也会触发refresh操作

  3. 每30秒有个定时器去检查shardIndexingBufferSize大小,最终调用updateShardBuffers方法去refresh

elasticsearch设置refresh_interval-1的思考

总结就是refresh_interval设置为-1内存不会炸掉。