elasticsearch删除文档后,磁盘空间不释放

nginx_access索引是用来存储nginx访问日志,随着时间的积累,这个索引占用的磁盘空间多达100G,导致服务器磁盘资源紧张。

通过API删除了几百万条文档数据,索引占用的磁盘空间没有释放。

有没有什么好办法,能删除索引的旧文档的时候能释放磁盘空间?

POST /nginx_access/_delete_by_query?wait_for_completion=true
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "time_local": {
              "lt": "2021-11-10T23:59:59.999Z"
            }
          }
        }
      ]
    }
  },
  "sort": {
    "time_local": "desc"
  }
}
阅读 6.4k
1 个回答

用delete by query删除的时候会先做个标记,下次merge时会把带有删除标记的doc删除。
可以在删除后接一个forcemerge https://www.elastic.co/guide/...