【发布时间】:2014-09-26 15:15:15
【问题描述】:
我希望删除索引上的所有过滤器查询,但保持文档不变。
有没有简单的方法来执行此操作?
【问题讨论】:
标签: elasticsearch elastica elasticsearch-percolate
我希望删除索引上的所有过滤器查询,但保持文档不变。
有没有简单的方法来执行此操作?
【问题讨论】:
标签: elasticsearch elastica elasticsearch-percolate
同时,这是固定的。以下命令将删除所有 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();
【讨论】:
您似乎应该能够在索引的.percolator 类型上使用delete-by-query 和match-all 查询。这不起作用,并且是一个长期报告的 ES 错误(请参阅 here 然后 here)。
下一个最佳解决方案是针对 .percolator 类型运行查询,然后循环遍历结果,分别删除每个 percolator 文档。
(已编辑,因为最初的答案是错误的。)
【讨论】: