Apache Solr - Verileri Güncelleme
Belgeyi XML Kullanarak Güncelleme
Mevcut belgedeki bir alanı güncellemek için kullanılan XML dosyası aşağıdadır. Bunu adıyla bir dosyaya kaydedinupdate.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>
Gördüğünüz gibi, verileri güncellemek için yazılan XML dosyası, tıpkı belge eklemek için kullandığımız dosya gibidir. Ancak tek fark,update alanın özelliği.
Örneğimizde, yukarıdaki belgeyi kullanacağız ve belgenin alanlarını id ile güncellemeye çalışacağız. 001.
XML belgesinin binSolr dizini. Adlı çekirdekte bulunan dizini güncellediğimiz içinmy_core, kullanarak güncelleyebilirsiniz post aşağıdaki gibi araç -
[Hadoop@localhost bin]$ ./post -c my_core update.xml
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
/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
Doğrulama
Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütüldüğünde, belgenin güncellendiğini görebilirsiniz.
Belgeyi Java Kullanarak Güncelleme (İstemci API)
Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu adıyla bir dosyaya kaydedinUpdatingDocument.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");
}
}
Terminalde aşağıdaki komutları çalıştırarak yukarıdaki kodu derleyin -
[Hadoop@localhost bin]$ javac UpdatingDocument
[Hadoop@localhost bin]$ java UpdatingDocument
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
Documents updated