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