我使用Solr6.2并且想要更新文档中的特定字段,有点像关系db:update table_a set field_x = filed_x + 1;
如何在Solr中实现这一目标? 提前谢谢。
答案 0 :(得分:2)
为此,您需要将所有字段设置为已存储,因为您可以使用Solr对Updating Parts of Documents的支持。
然后,您可以使用inc
命令递增文档中的字段:
{
"id":"mydoc",
"popularity":{"inc":20}
}
由于内部更新是“检索文档,更改值,重新索引文档”,因此必须将所有字段设置为已存储。如果您在6.2中使用默认的无架构..架构,则默认情况下会存储所有字段。如果您正在使用自定义架构或通过Schema 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);