Solr:通过查询部分更新删除值

时间:2016-09-09 08:26:20

标签: solr

我想从大索引中的多值字段中删除一个特定值,我需要先查询哪些文档包含该值,即:

  1. 检索包含特定值的文档的ID。
  2. 部分更新这些文件(使用[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter prerun_command=/etc/puppet/etckeeper-commit-pre postrun_command=/etc/puppet/etckeeper-commit-post environment=production reports=log, foreman [master] dns_alt_names = yourdomain.com certname=yourdomain.com external_nodes=/etc/puppet/node.rb node_terminus=exec [agent] server=yourdomain.com listen=true [production] modulepath=/etc/puppetlabs/code/environments/production/modules )。
  3. Solr版本是5.1。如有必要,我可以更新,但更改日志并不表示与此问题有任何关联。

    我通过Solr Web界面(http://localhost:8983/solr/#/core/documents)在remove端点上尝试了以下查询(在一些变体中),尝试从所有文档中删除值:< / p>

    /select

    服务器响应是&#34;成功&#34;,但没有更新文档。

    我可以做的是查询{"id":"*", "field": {"remove":"value"} } ,提取文档ID,并(以编程方式)为这些ID生成更新查询,类似于this answer中指出的内容。但我希望应该有一个更直接的解决方案。

    partial updates documentation和其他相关网页中提供的示例在此处并不真正适用,因为它们假定已事先知道更新文档的ID。 关于类似问题的大多数其他讨论都是在引入部分更新之前引用旧的Solr版本(在Solr 4中)。

1 个答案:

答案 0 :(得分:0)

据我所知,查询没有&#34;更新&#34; Solr当前的功能,所以建议的方式仍然是获取和更新。

批处理这些更新(一次选择,一次更新)应该按预期工作,减少向Solr发出的请求数。