【问题标题】:Solr: remove value with partial update by querySolr:通过查询删除部分更新的值
【发布时间】:2016-09-09 08:26:20
【问题描述】:

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

  1. 检索包含特定值的文档的 ID。
  2. 部分更新这些文档(使用remove)。

Solr 版本是 5.1。如有必要,我可以更新,但更改日志未表明与此问题有任何相关性。

我已经通过 Solr Web 界面 (http://localhost:8983/solr/#/core/documents) 在 /select 端点上尝试了以下查询(有几种变体),试图从所有文档中删除该值:

{"id":"*", "field": {"remove":"value"} }

服务器响应为“成功”,但没有更新任何文档。

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

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

【问题讨论】:

    标签: solr


    【解决方案1】:

    据我所知,目前 Solr 中没有“通过查询更新”功能,因此获取和更新仍然是建议的方式。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2014-11-15
      • 2012-11-01
      相关资源
      最近更新 更多