segment 文件一旦生成就不可修改,而且每个文档都有1个唯一的内部 Id,该 Id 不同于文档 Id,是 lucence 自动生成的。当 es 删除文档的时候会在.del文件里面用其唯一内部 Id标记该文档被删除了。当实际在该 segment 上做查询时,被删除的文档也会被匹配,但在返回前会检查下.del 中是否文档已经被删除,如果是,那么就把该文档从赶回结果中剔除。文档真正被删除是在做 segment 合并的时候,在这个过程中会将已经删除的文档去除。segment 合并的过程 es 有内部机制自动进行,当然你也可以通过 force merge api 主动触发它。因此 es 占用空间不会无限增大。