elasticsearch 通过查询从Elasticsearch中删除记录,elasticsearch,elasticsearch" /> elasticsearch 通过查询从Elasticsearch中删除记录,elasticsearch,elasticsearch" />

elasticsearch 通过查询从Elasticsearch中删除记录

elasticsearch 通过查询从Elasticsearch中删除记录,elasticsearch,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"} }

我正在尝试从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"}
            }
        }
}'

但它并没有删除任何记录。因此,有一种或其他方法可以删除记录,这是正确的。

在1.0之前,delete by查询不使用过滤器。语法直接指向搜索API中的“查询”块。您需要改用


自2.0以来,已不推荐使用“按查询删除”。使用滚动/扫描查找所有要删除的文档ID,并调用“按ID删除”

1.5.3中已弃用

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


还有一个插件你可以使用。

或者你可以使用一个过滤的查询并向其中添加一个过滤器。区别在于过滤器是缓存的,而且性能更高。我相信当你查询删除时,你希望避免使用缓存的结果。为什么?我想这取决于你执行的查询的域和类型。这与有不同的结果无关在这种情况下,这只是为了更快地获得结果。但在某些情况下,您确实希望避免缓存只执行一次的重过滤器(顺便说一下,您可以使用elasticsearch来实现)。
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"}
    }
}'