tongchenkeji 发表于:2022-12-8 15:51:230次点击 已关注取消关注 关注 私信 Elasticsearch如何清理已删除的文档[阿里云检索分析服务 Elasticsearch版] 暂停朗读为您朗读 Elasticsearch如何清理已删除的文档 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 检索分析服务 Elasticsearch版# 检索分析服务 Elasticsearch版775
阿里云服务支持AM 2023-11-27 19:17:59 1 可以通过删除索引或文档清理数据。删除索引,可以在Kibana通过delete命令删除,详情参考删除索引。 删除文档后,磁盘空间没有下降,可以通过_forcemer强制合并,合并过程需要点时间,通过GET _cat/tasks?v获取正在执行的任务。
相信光的奥特王小懒AM 2023-11-27 19:17:59 2 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,已释放其占用的大量系统资源。
可以通过删除索引或文档清理数据。删除索引,可以在Kibana通过delete命令删除,详情参考删除索引。
删除文档后,磁盘空间没有下降,可以通过_forcemer强制合并,合并过程需要点时间,通过GET _cat/tasks?v获取正在执行的任务。
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,已释放其占用的大量系统资源。