返回到文章

采纳

编辑于

ElasticSearch中根据查询结果删除数据(delete by query)

elk logstash
ElasticSearch
运维

原有的方法在2.0版本中已经删除了,提供了delete by query插件来实现这个功能。这个插件的使用过程大致如下:

1.安装。打开命令行,切到Elasticsearch文件夹中,运行如下命令:

sudo bin/plugin install delete-by-query

成功安装后,结果如下:
screenshot

集群环境下必须在每个结点上安装,安装之后要重启结点才能使这个插件生效。

2.安装和重启之后就可以像2.0以前的版本一样使用delete by query了。

3.执行删除命令

curl -XDELETE 'https://10.0.21.xx:9200/applog/logs/_query?pretty' -d ' 
{
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "@timestamp": {
            "lte": "2016-11-21"
          }
        }
      }
    }
  }
}'

4.合并

curl -XPOST 'https://10.0.21.xx:9200/applog/_optimize?max_num_segments=1'

大功告成