2016-10-27 6 views
0

Ich benutze Solr6.2 und möchte ein bestimmtes Feld in einem ähnlichen Dokument in relationalem db aktualisieren: update table_a set field_x = filed_x + 1;Aktualisiere spezifisches Feld in Solr

Wie das in Solr zu erreichen? Vielen Dank im Voraus.

Antwort

2

Damit dies funktioniert müssen Sie alle Felder als gespeichert haben, da Sie dann Solrs Unterstützung für Updating Parts of Documents verwenden können.

Sie können dann mit dem inc Befehl ein Feld in einem Dokument zu erhöhen: als gespeicherte

{ 
    "id":"mydoc", 
    "popularity":{"inc":20} 
} 

Da intern ein Update „Dokument abrufen, ändern Wert, reindex Dokument“, werden alle Felder muss eingestellt werden . Wenn Sie das Schema schemaless .. schema .. in 6.2 verwenden, werden standardmäßig alle Felder gespeichert. Wenn Sie ein benutzerdefiniertes Schema verwenden oder Felder manuell über die Schema-API geändert haben, müssen Sie sicherstellen, dass sie alle als gespeichert festgelegt sind.

Update:

Für SolrJ, so etwas wie das funktionieren sollte (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); 
+0

Wirklich vielen Dank für Ihre Antwort, ich kann etwas vermissen. Ich möchte SolrJ verwenden und habe keine Ahnung, welche Klasse/Methode dasselbe Ergebnis erzielen kann. –

Verwandte Themen