我想在solr中更新文档的特定字段。然而,当试图这样做其他 文档的字段变为空。
CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://mydomain:8983/solr/index_socialmedia/");
List<SolrInputDocument> solrInputDocsList = new ArrayList<SolrInputDocument>();
SolrInputDocument solrInputDoc = new SolrInputDocument();
solrInputDoc.addField("id","427832898745234516478592");
solrInputDoc.addField("city","Kolkata");
solrInputDocsList.add(solrInputDoc);
server.add(solrInputDocsList);
server.commit();
在上面的代码中,“id”字段是唯一字段。 我该如何解决这个问题。
答案 0 :(得分:1)
我尝试使用以下代码段。它可以进行部分更新。试试这个。
SolrServer server = new HttpSolrServer("http://mydomain:8983/solr/index_socialmedia/");
SolrInputDocument solrInputDoc = new SolrInputDocument();
Map<String, String> update = new HashMap<String, String>();
update.put("set", "Kolkata");
solrInputDoc.addField("id","427832898745234516478592");
solrInputDoc.addField("city", update);
server.commit();
答案 1 :(得分:0)
在solr schema.xml中设置<uniqueKey>id</uniqueKey>
答案 2 :(得分:0)
您使用的是哪个solr版本? 如果它低于4.0,则solr不支持单字段更新(部分更新) 因此,在您的情况下,将删除现有的旧文档,并插入具有相同ID的新文档 (理由Solr不支持单字段或部分更新是lucene不支持部分更新)
如果您使用Solr 4.0,可以参考此solrj api for partial document update