我希望删除索引上的所有过滤器查询,但保留文档完整。
有一种简单的方法可以执行此操作吗?
答案 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-query和match-all查询。这不起作用,并且是一个长期报告的ES错误(请参阅here然后here)。
下一个最佳解决方案是针对.percolator
类型运行查询,然后循环结果,逐个删除每个过滤器文档。
(编辑,因为最初的答案是错误的。)