Apache Solr - aktualizacja danych
Aktualizacja dokumentu za pomocą XML
Poniżej znajduje się plik XML używany do aktualizacji pola w istniejącym dokumencie. Zapisz to w pliku o nazwieupdate.xml.
<add>
<doc>
<field name = "id">001</field>
<field name = "first name" update = "set">Raj</field>
<field name = "last name" update = "add">Malhotra</field>
<field name = "phone" update = "add">9000000000</field>
<field name = "city" update = "add">Delhi</field>
</doc>
</add>
Jak widać, plik XML napisany w celu aktualizacji danych jest taki sam, jak ten, którego używamy do dodawania dokumentów. Ale jedyną różnicą jest to, że używamyupdate atrybut pola.
W naszym przykładzie użyjemy powyższego dokumentu i spróbujemy zaktualizować pola dokumentu o id 001.
Załóżmy, że dokument XML istnieje w binkatalog Solr. Ponieważ aktualizujemy indeks, który istnieje w rdzeniu o nazwiemy_core, możesz zaktualizować za pomocą post narzędzie w następujący sposób -
[Hadoop@localhost bin]$ ./post -c my_core update.xml
Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool update.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log
POSTing file update.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.159
Weryfikacja
Odwiedź stronę główną interfejsu internetowego Apache Solr i wybierz rdzeń jako my_core. Spróbuj pobrać wszystkie dokumenty, przekazując zapytanie „:” w polu tekstowymqi wykonaj zapytanie. Podczas wykonywania można zauważyć, że dokument jest aktualizowany.
Aktualizacja dokumentu za pomocą języka Java (interfejs API klienta)
Poniżej znajduje się program Java do dodawania dokumentów do indeksu Apache Solr. Zapisz ten kod w pliku o nazwieUpdatingDocument.java.
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.request.UpdateRequest;
import org.apache.Solr.client.Solrj.response.UpdateResponse;
import org.apache.Solr.common.SolrInputDocument;
public class UpdatingDocument {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.setAction( UpdateRequest.ACTION.COMMIT, false, false);
SolrInputDocument myDocumentInstantlycommited = new SolrInputDocument();
myDocumentInstantlycommited.addField("id", "002");
myDocumentInstantlycommited.addField("name", "Rahman");
myDocumentInstantlycommited.addField("age","27");
myDocumentInstantlycommited.addField("addr","hyderabad");
updateRequest.add( myDocumentInstantlycommited);
UpdateResponse rsp = updateRequest.process(Solr);
System.out.println("Documents Updated");
}
}
Skompiluj powyższy kod, wykonując następujące polecenia w terminalu -
[Hadoop@localhost bin]$ javac UpdatingDocument
[Hadoop@localhost bin]$ java UpdatingDocument
Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.
Documents updated