段(segment)
因为ES的索引具有不可变性,当数据更新的时候,ES通过增加额外的索引反映变化。段就是索引文件的一个子文件,每个段都是一个倒排索引,段具有不可变性。
数据更新时的操作:
- 新的文档(document)写入内存区的索引缓存,这时这条数据还不能被检索
- 每隔一段时间(默认1秒),内存区的索引缓存被刷新(refresh)到文件系统缓存,成为一个新的打开的段,这时数据可以被检索
- 新的段提交,执行flush操作,写入磁盘。提交后,新的段加入提交点,缓存被清除。
提交点
段被写入到磁盘后会形成一个提交点。提交点是一个用来记录提交后的段信息的文件。当一个段有提交点的时候,这个段就只有读的权限,失去了写的权限。与之相对的,当段还处于内存阶段时,段只有写权限,没有读权限。