Elasticsearch如何清理已删除的文档

已解决

Elasticsearch如何清理已删除的文档

展开
收起
阿里云服务支持 2022-12-08 15:51:23 401 分享 版权
2 条回答
写回答
取消 提交回答
  • 推荐回答
    官方回答

    可以通过删除索引或文档清理数据。删除索引,可以在Kibana通过delete命令删除,详情参考删除索引

    删除文档后,磁盘空间没有下降,可以通过_forcemer强制合并,合并过程需要点时间,通过GET _cat/tasks?v获取正在执行的任务。

    2022-12-08 15:56:45
    赞同 展开评论
  • 一名在读研究生程序猿,欢迎大家指教,我们共同进步!

    Elasticsearch是建立在Apache Lucene基础上的实时分布式搜索引擎,Lucene为了提高搜索的实时性,采用不可再修改(immutable)方式将文档存储在一个个segment中。

    也就是说,一个segment在写入到存储系统之后,将不可以再修改。那么Lucene是如何从一个segment中删除一个被索引的文档呢?

    简单的讲,当用户发出命令删除一个被索引的文档#ABC时,该文档并不会被马上从相应的存储它的segment中删除掉,而是通过一个特殊的文件来标记该文档已被删除。

    当用户再次搜索到#ABC时,Elasticsearch在segment中仍能找到#ABC,但由于#ABC文档已经被标记为删除,所以Lucene会从发回给用户的搜索结果中剔除#ABC,所以给用户感觉的是#ABC已经被删除了。

    Elasticseach会有后台线程根据Lucene的合并规则定期进行Segment Merging合并操作,一般不需要用户担心或者采取任何行动。

    被删除的文档在segment合并时,才会被真正删除掉。在此之前,它仍然会占用着JVM heap和操作系统的文件cache等资源。在某些情况下,我们需要强制Elasticsearch进行segment merging,已释放其占用的大量系统资源。

    2022-12-08 16:31:58
    赞同 展开评论

阿里云检索分析服务Elasticsearch版兼容开源ELK功能,免运维全托管,提升企业数据检索与运维分析能力。

收录在圈子:
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。

热门讨论

热门文章

还有其他疑问?
咨询AI助理