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

2021-01-07  本文已影响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();

    }

}

上一篇 下一篇

猜你喜欢

热点阅读