Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

未清除的已删文档什么意思?如何彻底删除呢? #15

Open
badboycxcc opened this issue Dec 3, 2024 · 1 comment
Open

Comments

@badboycxcc
Copy link

image

@Bronya0
Copy link
Owner

Bronya0 commented Dec 4, 2024

在Elasticsearch中,"未清除的已删文档"(或称为“已删除但未回收的文档”)指的是那些已经被逻辑删除但尚未从物理存储中移除的文档。这些文档仍然占用磁盘空间,并且影响索引的性能。

为什么会有未清除的已删文档?
逻辑删除机制:当一个文档被删除时,Elasticsearch 并不会立即从磁盘上物理删除它。相反,它会在内部标记该文档为已删除状态。这样做是为了提高删除操作的效率,避免频繁地进行磁盘写入。
段合并(Segment Merging):Elasticsearch 使用基于 Lucene 的倒排索引结构,数据被分段存储。每个段是一个独立的索引文件。当文档被删除时,只是在这个段中标记为删除,而不是直接从段中移除。只有当段合并发生时,才会真正清理掉这些已删除的文档。
如何彻底删除?
为了彻底删除文档并回收磁盘空间,你可以采取以下几种方法:

  1. 等待自动段合并
    Elasticsearch 会定期自动执行段合并,将多个小段合并成一个较大的段,在这个过程中会清理掉已删除的文档。这是最自然的方式,不需要额外的操作,但可能会有一定的延迟。
  2. 强制段合并
    如果你需要立即清理已删除的文档,可以手动触发段合并。使用 _forcemerge API 来强制合并段,这将减少段的数量并清理已删除的文档。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants