ES索引特性
ES索引的特点:倒排索引,不可变性。
不可变性
倒排索引被写入磁盘后永远不会被修改。
不可变索引的优势:
- 不需要锁,因为不需要更新索引
- 大部分读请求会直接请求内存,带来性能提升
- 其他缓存(如filter缓存)在索引生命周期内始终有效
不可变索引的劣势:
- 删除数据时,不会马上对数据进行物理删除,而是在
.del
文件中打上删除标记。只有当段更新时才会删除数据,这样会造成大量的空间浪费。 - 如频繁更新同一条数据,每次更新都会产生新数据,标记旧数据(并没有删除),造成大量空间浪费
- 每次新增数据都需要新增一个段(segment)来存储数据。对服务器资源(如文件句柄)的消耗较大
- 查询结果中包含了所有的结果集,需要从中剔除带有删除标记的数据,增加了查询负担。