美文网首页
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