Apache Solr - Cập nhật dữ liệu

Cập nhật tài liệu bằng XML

Sau đây là tệp XML được sử dụng để cập nhật một trường trong tài liệu hiện có. Lưu điều này vào một tệp có tênupdate.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>

Như bạn có thể quan sát, tệp XML được viết để cập nhật dữ liệu cũng giống như tệp chúng tôi sử dụng để thêm tài liệu. Nhưng sự khác biệt duy nhất là chúng tôi sử dụngupdate thuộc tính của trường.

Trong ví dụ của chúng tôi, chúng tôi sẽ sử dụng tài liệu trên và cố gắng cập nhật các trường của tài liệu với id 001.

Giả sử tài liệu XML tồn tại trong binthư mục của Solr. Vì chúng tôi đang cập nhật chỉ mục tồn tại trong lõi có tênmy_core, bạn có thể cập nhật bằng cách sử dụng post công cụ như sau -

[Hadoop@localhost bin]$ ./post -c my_core update.xml

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

/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

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng tài liệu đã được cập nhật.

Cập nhật tài liệu bằng Java (API ứng dụng khách)

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênUpdatingDocument.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"); 
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

[Hadoop@localhost bin]$ javac UpdatingDocument 
[Hadoop@localhost bin]$ java UpdatingDocument

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

Documents updated