【问题标题】:How do I delete all percolator queries in an Elasticsearch index如何删除 Elasticsearch 索引中的所有过滤器查询
【发布时间】:2014-09-26 15:15:15
【问题描述】:

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

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

【问题讨论】:

    标签: elasticsearch elastica elasticsearch-percolate


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      了解这一事实后,您可以像这样从 percolator 中删除所有查询:

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

      【讨论】:

      • 那么您将如何删除单个查询?
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-08
        • 2017-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-17
        相关资源
        最近更新 更多