2

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

有没有简单的方法来执行此操作?

4

3 回答 3

3

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

curl -XDELETE 'localhost:9200/my-index/.percolator/_query' -d '{
    "query" : {
        "match_all" : {}
    }
}'
于 2016-02-22T19:57:55.497 回答
1

Percolator 是一种特殊类型,.percolator在您的索引中有名称。

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

知道了这个事实,您可以像这样从 percolator 中删除所有查询:

$client = new Elastica\Client();
$index = $client->getIndex('myindex');
$percolator = $index->getType('.percolator');
$percolator->delete();
于 2015-05-15T01:09:42.877 回答
0

似乎您应该能够对索引类型使用delete-by-querymatch-all查询。.percolator这不起作用,并且是一个长期报告的 ES 错误(请参阅此处此处)。

下一个最佳解决方案是针对该.percolator类型运行查询,然后循环遍历结果,分别删除每个 percolator 文档。

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

于 2015-01-18T17:15:40.447 回答