У меня 1.000.000 записей в моей базе данных solr. Я хочу обновить все записи без уникального идентификатора ключа, но получаю сообщение об ошибке, требуется уникальный ключ! мой документ 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"
0
user7855273 11 Сен 2018 в 20:20

1 ответ

Лучший ответ

Вы не можете.

Любое обновление в Solr должно ссылаться на uniqueKey существующего документа - здесь нет таких функций, как обновление по запросу или подобных UPDATE foo SET bar = 'baz' WHERE field = 'spam';. Поле uniqueKey определяет, будет ли создан новый документ или перезаписан старый.

В вашем примере кажется, что у вас есть уникальное поле id, но если это не так, вы можете настроить Solr на присвоение уникального идентификатора каждому документу при его добавлении в индекс. Затем вам нужно будет ссылаться на этот идентификатор при обновлении существующего документа.

2
MatsLindh 11 Сен 2018 в 18:19