请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于 ES 文档删除与 merge segment 的两个问题

求教老师有两个问题:

  1. ES 删除文档其实是在 .del 文件记录 文档 id 使其不被查询到,是不是说其实文档在磁盘是不可删除的,这样会导致 ES 占用空间无限增大么?
    1. 删除 .del 文件会导致其记录对应的文档被删除么?

正在回答

1回答

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

  2. 如上所述,删除.del文件是不会导致对应文档删除的,只有 segment merge 的时候才是真正删除。而且你不能自己去删除.del 文件

0 回复 有任何疑惑可以回复我~
  • 提问者 加肥喵 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-11-12 20:35:37
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号