elasticsearch 默认为1s,文档中描述,当需要更快的indexing的时候,可以设置为-1,这个时候不会从内存commit索引。
这里有一个疑问,如果一值不refresh,数据是不是都会放在内存中,这样不会把内存撑爆吗?
还有个小问题,refresh = null 和refresh=-1,是不是一样的,看文档,null是重置,这里的意思是恢复默认值吗?
这里有一个疑问,如果一值不refresh,数据是不是都会放在内存中,这样不会把内存撑爆吗?
还有个小问题,refresh = null 和refresh=-1,是不是一样的,看文档,null是重置,这里的意思是恢复默认值吗?
2 个回复
Charele - Cisco4321
赞同来自: 陈水鱼
ES refresh ---> Lucene flush
ES flush ---> Lucene commit
(虽然不是完全相同,但大致可以这么认为)
1
如果一值不refresh,数据是不是都会放在内存中,这样不会把内存撑爆吗?
不会,Lucene中有设置(缺省16M), 超过这个值,就会自动flush(等于ES的refresh)
ES里面会重写设置这个值,内存的10%
2
refresh = null 即恢复为缺省值null
ES里面,代码里会判断,如果是null,会用1去代替,
所以如果不设置,效果就是1秒refresh一次。
(另外,"缺省的效果"1s,和你显式的设置为1s,效果还是有点不一样的,这个只有看代码才能理解)
refresh = -1,就是不在ES里自动执行refresh
God_lockin
赞同来自:
你说的没错,一直写不做commit会把内存撑爆,但是es会自己做commit,即使你refresh = -1
refresh = ? 控制的是刷新的间隔,-1 是不定时刷新而是到达一定的阈值之后自己刷。
refresh = null 是把你后设的配置清掉 ,恢复1s(默认值)这样