首页 > 解决方案 > 如何更新 solr 数据库中没有 id 的多个文档?

问题描述

我的 solr 数据库中有 1.000.000 条记录。我想更新所有没有唯一键 ID 的记录,但我得到错误唯一键是必需的!我的 solr 文件是:

  {
  id = 001, 
  name="Joe", 
  city = [Hyderabad], 
  phone = [9848022337]
  }

这是我的代码。

  //Preparing the Solr client 

  //Preparing the Solr document 

  SolrInputDocument doc = new SolrInputDocument();  

  Map map=new HashMap();
  map.put("set","Ahmet");
  doc.addField("name", map);

  // or adding id list 
  // List ids = new ArrayList();
 // doc.addField("id",ids); 


  updateRequest.add( doc );  
  UpdateResponse rsp = updateRequest.process(Solr);

我该怎么做,还有其他选择吗?

similar sql is update tableName set name="ahmet"

标签: solr

解决方案


你不能。

Solr 中的任何更新都必须引用uniqueKey现有文档的 —— 没有类似查询更新或类似UPDATE foo SET bar = 'baz' WHERE field = 'spam';. 该uniqueKey字段定义是创建新文档还是覆盖旧文档。

在您的示例中,您似乎有一个id唯一的字段,但如果不是这种情况,您可以将 Solr 配置为在将每个文档添加到 index 时为其分配一个唯一的 id。然后,您必须在更新现有文档时引用该 ID。


推荐阅读