我是使用Elasticseach的新手。我使用elasticsearch聚合日志。我的问题是存储,我删除了所有索引,现在只有一个索引。
当我呼叫 / _ 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
谢谢
答案 0 :(得分:0)
https://www.elastic.co/guide/en/elasticsearch/guide/current/delete-doc.html
如更新整个文档中所述,删除文档 不会立即从磁盘上删除文档;它只是将其标记为 已删除。 Elasticsearch将清理已删除文档中的 您继续为更多数据编制索引的背景。
答案 1 :(得分:0)
您可能会在非只读索引上遇到_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将使别名指向新索引。然后,要删除旧数据,只需删除旧索引。
希望有帮助!