我使用以下命令删除ElasticSearch(elasticsearch-7.2.0)文档:
curl -H'Content-Type:application/json' -d'{
"query": {
"range": {
"@timestamp": {
"lt": "now-40d",
"format": "epoch_millis"
}
}
}
}
' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty"
这是结果:
{
"took" : 55500,
"timed_out" : false,
"total" : 16710000,
"deleted" : 16710000,
"batches" : 20000,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
但是当我检查磁盘使用情况时:
du -sh /data/docker/efk/elasticsearch-7.2.0/data/nodes/0
磁盘空间未释放。如何释放磁盘空间?
答案 0 :(得分:2)
elastic只是将文档标记为已删除,并在合并过程发生时将其释放。
您可以使用forecemerge API释放磁盘。 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html
,但是您应该考虑使用此命令时,将自动为该索引禁用自动合并和自动释放磁盘。
有一些示例命令可以解决您的问题:
curl -H'Content-Type:application/json' -XPOST 127.0.0.1:9200/AN-INDEX-NAME/_forcemerge?max_num_segments=1
合并过程是资源杀手,您应该一次对索引执行一次。