更新Solr中的特定字段

时间:2016-10-27 01:18:27

标签: solr field

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

如何在Solr中实现这一目标? 提前谢谢。

1 个答案:

答案 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);