更新 Solr 中的特定字段

Update specific field in Solr

我正在使用 Solr6.2 并想更新文档中的特定字段,有点像关系数据库中的字段:update table_a set field_x = filed_x+1;

如何在 Solr 中实现? 提前致谢。

为此,您需要将所有字段设置为已存储,因为您随后可以使用 Solr 对 Updating Parts of Documents.

的支持

然后您可以使用 inc 命令来增加文档中的字段:

{
    "id":"mydoc",
    "popularity":{"inc":20}
}

由于内部更新是 "retrieve document, change value, reindex document",所有字段都必须设置为已存储。如果您在 6.2 中使用默认的无模式 .. 模式 ..,则默认存储所有字段。如果您使用的是自定义架构或通过架构手动更改了字段 API,您必须确保它们都设置为已存储。

更新:

对于 SolrJ,类似这样的东西应该可以工作 (from Yonik's post):

SolrInputDocument doc = new SolrInputDocument();

doc.addField("id", "test");
Map<String, String> cmd2 = new HashMap<>();
cmd1.put("inc", "20");
doc.addField("field1", cmd1);
client.add(collection, doc);