美文网首页
es 删除文档与删除索引的区别

es 删除文档与删除索引的区别

作者: 多喝水不臭脚 | 来源:发表于2021-01-07 14:12 被阅读0次

删除索引和删除文档的区别?

1)删除索引是会立即释放空间的,不存在所谓的“标记”逻辑。

2)删除文档的时候,是将新文档写入,同时将旧文档标记为已删除。 磁盘空间是否释放取决于新旧文档是否在同一个segment file里面,因此ES后台的segment merge在合并segment file的过程中有可能触发旧文档的物理删除。

但因为一个shard可能会有上百个segment file,还是有很大几率新旧文档存在于不同的segment里而无法物理删除。想要手动释放空间,只能是定期做一下force merge,并且将max_num_segments设置为1。


API

private void forceMerge() {

ForceMergeRequest requestAll =new ForceMergeRequest();

    requestAll.maxNumSegments(1);

    requestAll.onlyExpungeDeletes(true);

    try {

ForceMergeResponse forceMergeResponse =restHighLevelClientJjzdNew.indices().forcemerge(requestAll, RequestOptions.DEFAULT);

    }catch (IOException e) {

e.printStackTrace();

    }

}

相关文章

网友评论

      本文标题:es 删除文档与删除索引的区别

      本文链接:https://www.haomeiwen.com/subject/pejzoktx.html