1.什么是 Refresh
es在写入数据的时候,会将数据存储到一个叫 index buffer 的地方,一段时间后(默认1秒发生一次)将 index buffer 写入到 Segment(分片)的过程叫Refresh
index buffer被占满时也会触发 Refresh
2.什么是 Transaction Log
es在写入数据时,会将 Segment 写入缓存,防止数据丢失,es将数据写入 index buffer 时,也会将数据写入 Transaction Log
好处:当es断电的时候,因为 Transaction Log 已经对数据进行了一个落盘的操作,在es重新启动时会通过 Transaction Log 对数据进行 recover(恢复)
3.什么是 Flush (默认30分钟调用一次 | Transaction Log 满的时候调用 「默认521MB」)
-
- 首先会调用 Refresh, index buffer 清空,并且 Refresh
-
- 调用 fsync,将缓存中的 Segment 写入磁盘
-
- 清空删除 Transaction Log
4.什么是 Merge
Flush 操作后,会将 Segment 写入磁盘。随着时间越长,磁盘中的 Segment 会越来越多。Merger 会将 Segment 进行合并,将 .del 文件中的数据进行一个真正的删除
es会自动进行Merge的操作。 人为操作:POST my_index/_forcemerge