通过查询从Elasticsearch中删除记录

utt*_*kar 13 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"}
            }
        }
}'
Run Code Online (Sandbox Code Playgroud)

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

Lou*_*eau 14

在1.0之前,按查询删除不使用过滤器.语法直接转到搜索API中的"查询"块.您需要使用范围查询.

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"}
    }
}'
Run Code Online (Sandbox Code Playgroud)


ple*_*ock 7

自2.0以来,不推荐使用查询删除.使用滚动/扫描查找要删除的所有文档ID,并通过ID调用delete

在1.5.3中弃用.

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

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

还有一个可以使用的逐个删除插件.