如何删除Elasticsearch索引中的所有过滤器查询

时间:2014-09-26 15:15:15

标签: elasticsearch elastica elasticsearch-percolate

我希望删除索引上的所有过滤器查询,但保留文档完整。

有一种简单的方法可以执行此操作吗?

3 个答案:

答案 0 :(得分:3)

同时这是固定的。以下命令将删除所有percoaltor查询:

curl -XDELETE 'localhost:9200/my-index/.percolator/_query' -d '{
    "query" : {
        "match_all" : {}
    }
}'

答案 1 :(得分:1)

Percolator是索引中名为.percolator的特殊类型。

在percolator中注册的每个查询都只是这种类型的文档。

了解这一事实,您可以删除来​​自过滤器的所有查询:

$client = new Elastica\Client();
$index = $client->getIndex('myindex');
$percolator = $index->getType('.percolator');
$percolator->delete();

答案 2 :(得分:0)

您似乎应该可以在索引的.percolator类型上使用delete-by-querymatch-all查询。这不起作用,并且是一个长期报告的ES错误(请参阅here然后here)。

下一个最佳解决方案是针对.percolator类型运行查询,然后循环结果,逐个删除每个过滤器文档。

(编辑,因为最初的答案是错误的。)