通过查询从Elasticsearch中删除记录

时间:2013-07-16 12:01:40

标签: elasticsearch

我正在尝试从Elasticsearch中删除特定的日期记录。我的查询如下:

curl -XDELETE 'http://localhost:9200/twitter/twit/_query' -d '
{
    "filter" : {
            "range" : {
                "date_time" : { "from" : "2012-10-01 00:00:01", "to" : "2013-05-01 11:59:59"}
            }
        }
}'

但它没有删除任何记录。所以它是正确的或有其他一些方法来删除记录。

2 个答案:

答案 0 :(得分:14)

在1.0之前,按查询删除不使用过滤器。语法直接转到搜索API中的“查询”块。您需要改为使用range query

curl -XDELETE 'http://localhost:9200/twitter/twit/_query' -d '
{
    "range" : {
        "date_time" : { "from" : "2012-10-01 00:00:01", "to" : "2013-05-01 11:59:59"}
    }
}'

答案 1 :(得分:7)

自2.0以来,

按查询删除已弃用。使用滚动/扫描查找要删除的所有文档ID,并通过ID调用删除

  

在1.5.3中弃用。

     

“按查询删除”将在2.0中删除:因为它有问题   静默强制刷新,这可能会导致OutOfMemoryError   在并发索引期间,还可以导致主数据库和副本数据库   变得不一致。而是使用滚动/扫描API查找所有   匹配ID,然后发出批量请求以删除它们。

https://www.elastic.co/guide/en/elasticsearch/reference/1.7/docs-delete-by-query.html

您还可以使用delete-by-query插件。