Elasticsearch索引全量更新后store.size与docs.deleted大幅下降原因问询
问题核心原因说明
1. docs.deleted 数值大幅下降的原因
- Elasticsearch的文档更新操作并非原地修改:执行全量更新时,旧版本文档不会被直接删除,只会被标记为
deleted状态,同时写入新版本的完整文档。你昨日观测到的63357813条删除标记,就是全量更新过程中产生的所有旧版本文档标记。 - Elasticsearch后台会自动触发**段合并(Segment Merge)**逻辑:合并过程中会将多个小的Segment合并为大Segment,同时直接丢弃所有标记为
deleted的旧文档,不会将其写入新生成的Segment中。合并完成后,已被清理的删除标记就会从docs.deleted统计中移除,因此数值大幅下降,剩余的3368035是暂未被合并清理的少量删除标记,或是全量更新后新产生的删除/更新操作生成的标记。
2. store.size 大幅下降的原因
和段合并、压缩直接相关,核心有两个因素:
- 存储空间直接释放:段合并过程中清理了超过6000万条标记删除的旧文档,这部分文档原本占用的存储空间被直接释放,是存储体积下降的主要原因。
- 合并后压缩效率提升:段合并完成后新生成的大Segment会重新执行压缩策略(Elasticsearch默认使用LZ4压缩,也可配置更高压缩比的DEFLATE算法),单个大Segment的压缩效率远高于多个分散的小Segment,会进一步降低存储占用。
补充说明:你观测到的docs.count少量上涨(从95889387到95891965),是全量更新结束到今日查询之间新写入的增量文档,属于正常现象。
内容的提问来源于stack exchange,提问作者zhuguowei
相关产品推荐
相关产品推荐

