我希望删除索引上的所有过滤器查询,但保持文档完整。
有没有简单的方法来执行此操作?
同时,这是固定的。以下命令将删除所有 percoaltor 查询:
curl -XDELETE 'localhost:9200/my-index/.percolator/_query' -d '{
"query" : {
"match_all" : {}
}
}'
Percolator 是一种特殊类型,.percolator
在您的索引中有名称。
在 percolator 中注册的每个查询都只是这种类型的一个文档。
知道了这个事实,您可以像这样从 percolator 中删除所有查询:
$client = new Elastica\Client();
$index = $client->getIndex('myindex');
$percolator = $index->getType('.percolator');
$percolator->delete();
似乎您应该能够对索引类型使用delete-by-query和match-all查询。.percolator
这不起作用,并且是一个长期报告的 ES 错误(请参阅此处和此处)。
下一个最佳解决方案是针对该.percolator
类型运行查询,然后循环遍历结果,分别删除每个 percolator 文档。
(编辑,因为最初的答案是错误的。)