我想从大索引中的多值字段中删除一个特定值,我需要先查询哪些文档包含该值,即:
[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
)。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中)。
答案 0 :(得分:0)
据我所知,查询没有&#34;更新&#34; Solr当前的功能,所以建议的方式仍然是获取和更新。
批处理这些更新(一次选择,一次更新)应该按预期工作,减少向Solr发出的请求数。