删除Solr中具有特定空字段的所有文档

时间:2016-08-26 13:06:37

标签: solr

查询这些文档适用于:"fq=-myfield:[* TO *]"

但是如何删除所有这些?似乎删除语法update?stream.body=<delete><query>...只接受查询,没有过滤器......

2 个答案:

答案 0 :(得分:1)

仅在查询代码中传递#include <iostream> #include <algorithm> #include <set> #include <iterator> int main() { std::set<int> s1{ 1, 2, 3, 4 }; std::set<int> s2{ 2, 4, 5 }; std::set<int> s3{ 2, 7, 8 }; std::multiset<int> s4; std::set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), std::insert_iterator<std::multiset<int>>(s4, s4.begin())); std::set_intersection(s4.begin(), s4.end(), s3.begin(), s3.end(), std::insert_iterator<std::multiset<int>>(s4, s4.begin())); auto max = std::max_element(s4.begin(), s4.end(), [&s4](int a, int b) { return s4.count(a) < s4.count(b); }); std::cout << "most present == " << *max << '\n'; } 。不要传递Proc SQL参数。那我觉得它会起作用。一旦我必须删除id字段字符串中包含单词-myfield[* TO *]的所有文档,我只是在查询标记之间传递了fq,并且它有效。如果有帮助,请告诉我。

答案 1 :(得分:1)

正确答案应该是:-myfield:*甚至是-myfield:[* TO *],但是:是强制性的。

这是curl的示例:

curl http://localhost:8983/solr/collection/update \ 
  -H "Content-Type: text/xml" \  
  --data-binary '<delete><query>-myfield:*</query></delete>'