更新 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);
我正在使用 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);