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