【问题标题】:Delete elasticsearch records by query通过查询删除elasticsearch记录
【发布时间】:2015-02-19 18:10:44
【问题描述】:

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

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 更改为 query 并得到:

{"_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"
  }

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

    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"}
        }
      }
    }'
    

    【讨论】:

    • 谢谢,我花了一个小时盯着它看,并没有注意到 _query 与 _search。
    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    相关资源
    最近更新 更多