【问题标题】:Disk space not freed after deleting documents from Elasticsearch从 Elasticsearch 中删除文档后未释放磁盘空间
【发布时间】:2020-08-12 20:05:10
【问题描述】:

我有一个具有以下规格的弹性搜索节点:

我从索引中删除了几个文档,但我的磁盘空间似乎没有释放。上面的截图显示,Elasticsearch 中的实际文档仅占用 1.5GB,如disk.indices 所示,而disk.used 为 73.6GB。我发现仅删除文档并不会从elasticsearch中删除文档,而只会将其标记为已删除。我已尝试使用this answer 中提到的 forcemerge 释放磁盘空间,但我的磁盘空间仍然显示相同。

如何从 elasticsearch 中永久删除文档并释放磁盘空间?

【问题讨论】:

  • 从主机的根文件夹运行du -h 会得到什么?你能看到磁盘空间被占用了吗?
  • 我可以看到.文件夹已经占用了74GB,其他的都是MB或者KB。
  • 你能运行这个只返回包含 GB 数据 du -h | grep -e '^\d*,\d*G' 的文件夹吗?
  • 请检查 forcemerge 是否真的发生了。 _GET '/_cat/segments/{index_name}'。如果你正确运行 forcemerge,每个分片应该有 1 个段。
  • 您无法强制合并,因为您的磁盘空间不足。问题不在 ES 中,而是在硬盘空间的其他地方被 ES 数据以外的东西占用。发现后可以删除,ES又可以正常工作了

标签: elasticsearch


【解决方案1】:

该主机上的某些东西正在占用空间,但问题与 ES 数据无关,因为 disk.indicesdisk.used 之间的比率几乎不可能如此小,因为 merging process 会负责释放尽可能频繁地腾出空间。

事实证明,它可能是位于磁盘上某处的日志文件未正确轮换并已累积数月。

【讨论】:

  • 发现是因为tomcat日志占用了大约50GB的空间。感谢您的帮助:)
  • 酷,很高兴它有帮助!根据经验,如果您发现 disk.indicesdisk.used 之间的比率如此之小,则表示 ES 之外有问题
【解决方案2】:

首先你应该释放一些空间。报到 '。'文件夹,看看里面有什么?

试试du -sh *

然后:

作为_cat/indices 的回复,您已经删除了 1119 文档。并根据错误,您应该首先反转 read_only_indices:

Clustor block expection

然后运行这个命令:

curl  -H'Content-Type:application/json' -XPOST localhost:9200/{AN-INDEX-NAME}/_forcemerge?max_num_segments=1

【讨论】:

  • forcemerge 无法工作,因为没有足够的磁盘空间。解决方案超出了 ES 的范围。 OP 在磁盘上占用了大量空间,需要删除
  • @val 是的。你说的对 。我认为他应该先看“。”文件夹
  • 他需要找到正确的文件夹,因为我认为. 是根文件夹
  • . 仅表示当前文件夹,无论 OP 位于文件系统树中的何处。
  • 非常感谢@Val 和 hamidbayat 的帮助。我发现我的 tomcat 中的日志占用了大约 50GB 的空间。
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-15
相关资源
最近更新 更多