通过查询删除elasticsearch记录

时间:2015-02-19 09:28:24

标签: elasticsearch

我有一个代码可以找到我需要的记录:

curl -XGET "http://localhost:9200/one/two/_search" -d '
{
  "query" : {
    "range" : {
        "timestamp" : { "gte" : "2014-09-01T00:00:00.000Z", "lt" : "2014-09-01T00:00:00.000Z||+1M"}
    }
  }
}'

现在我想将其转换为删除这些记录的代码。

根据this doc我尝试将 _search 更改为查询并获得:

{"_index":"one","_type":"two","_id":"_query","found":false}

我尝试将 XGET 更改为 XDELETE

{"found":false,"_index":"one","_type":"two","_id":"_search","_version":1}

Elasticsearch版本:

"version" : {
    "number" : "1.0.3",
    "build_hash" : "61bfb72d845a59a58cd9910e47515665f6478a5c",
    "build_timestamp" : "2014-04-16T14:43:11Z",
    "build_snapshot" : false,
    "lucene_version" : "4.6"
  }

删除这些记录的正确查询是什么?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用按查询删除来删除与您的查询匹配的文档,但不是使用_search而是需要说_query

curl -XDELETE "http://localhost:9200/one/two/_query" -d '
{
  "query" : {
    "range" : {
        "timestamp" : { "gte" : "2014-09-01T00:00:00.000Z", "lt" : "2014-09-01T00:00:00.000Z||+1M"}
    }
  }
}'