【问题标题】:Delete unused data elasticsearch删除未使用的数据 elasticsearch
【发布时间】:2019-02-22 03:15:00
【问题描述】:

我是使用 elasticseach 的新手。我使用弹性搜索来聚合日志。我的问题是存储问题,我删除了所有索引,现在只有一个索引。

当我调用 /_cat/allocation?v 时,disk.indices 为 23.9mb,disk.used 为 16.4gb。为什么会有这种差异?如何删除未使用的数据或如何正确删除索引?

我运行了命令:

curl -XPOST "elasticsearch:9200/_forcemerge?only_expunge_deletes=true"

但我没有看到任何改善。

_cat/allocation?v的输出:

shards disk.indices disk.used disk.avail
12       24.3mb    16.4gb     22.7gb   

_cat/shards?v的输出:

index        shard prirep state      docs  store ip           node
articles     0     p      STARTED    3666 24.2mb 192.168.1.21 lW9hsd5
articles     0     r      UNASSIGNED                          
storage_test 2     p      STARTED       0   261b 192.168.1.21 lW9hsd5
storage_test 2     r      UNASSIGNED                          
storage_test 3     p      STARTED       0   261b 192.168.1.21 lW9hsd5
storage_test 3     r      UNASSIGNED                          
storage_test 4     p      STARTED       0   261b 192.168.1.21 lW9hsd5
storage_test 4     r      UNASSIGNED                          
storage_test 1     p      STARTED       0   261b 192.168.1.21 lW9hsd5
storage_test 1     r      UNASSIGNED                          
storage_test 0     p      STARTED       0   261b 192.168.1.21 lW9hsd5
storage_test 0     r      UNASSIGNED                          
twitter      3     p      STARTED       1  4.4kb 192.168.1.21 lW9hsd5
twitter      3     r      UNASSIGNED                          
twitter      2     p      STARTED       0   261b 192.168.1.21 lW9hsd5
twitter      2     r      UNASSIGNED                           
twitter      4     p      STARTED       0   261b 192.168.1.21 lW9hsd5
twitter      4     r      UNASSIGNED                          
twitter      1     p      STARTED       0   261b 192.168.1.21 lW9hsd5
twitter      1     r      UNASSIGNED                          
twitter      0     p      STARTED       0   261b 192.168.1.21 lW9hsd5
twitter      0     r      UNASSIGNED                          
.kibana      0     p      STARTED       4 26.4kb 192.168.1.21 lW9hsd5

谢谢

【问题讨论】:

  • 可以显示_cat/allocation?v 的输出吗?也许_cat/shards?v
  • 你好,我加了。谢谢!

标签: elasticsearch


【解决方案1】:

https://www.elastic.co/guide/en/elasticsearch/guide/current/delete-doc.html

正如在更新整个文档中已经提到的,删除一个文档 不会立即从磁盘中删除文档;它只是将其标记为 删除。 Elasticsearch 会清理已删除的文档 背景,因为您继续索引更多数据。

【讨论】:

  • 感谢您的回复!我已经删除了所有索引,而不仅仅是一个文档,我试图用 forcemerge 强制清理,但它不起作用。如果你能给我一个关于如何清理磁盘的提示?谢谢
【解决方案2】:

您可能会面临_forcemerge 对非只读索引的一些副作用:

警告:只能针对只读索引调用强制合并。对读写索引运行强制合并可能会导致生成非常大的段(每个段>5Gb),并且合并策略永远不会考虑再次合并,直到它主要由已删除的文档组成。这可能会导致非常大的片段保留在分片中。

在这种情况下,我建议先将索引设为只读:

PUT your_index/_settings
{
  "index": {
    "blocks.read_only": true
  }
}

然后再次强制合并并启用回写索引:

PUT your_index/_settings
{
  "index": {
    "blocks.read_only": false
  }
}

如果这不起作用,您可以将reindex从旧索引转换为新索引,然后删除旧索引。

有没有更好的删除旧日志的方法?

您似乎想删除旧的日志消息。虽然您可以通过查询发出删除,但实际上有更好的方法:使用Rollover API

这个想法是每次旧索引变得太大时创建一个新索引。写入将发生在固定的alias 中,并且当旧索引太旧或太大时,Rollover API 会将别名指向新索引。然后要删除旧数据,您只需删除旧索引即可。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多