Apache Solr: actualización de datos
Actualización del documento mediante XML
A continuación se muestra el archivo XML utilizado para actualizar un campo en el documento existente. Guarda esto en un archivo con el nombreupdate.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>
Como puede observar, el archivo XML escrito para actualizar datos es como el que usamos para agregar documentos. Pero la única diferencia es que usamos elupdate atributo del campo.
En nuestro ejemplo, usaremos el documento anterior e intentaremos actualizar los campos del documento con el id 001.
Suponga que el documento XML existe en el bindirectorio de Solr. Dado que estamos actualizando el índice que existe en el núcleo llamadomy_core, puedes actualizar usando el post herramienta de la siguiente manera:
[[email protected] bin]$ ./post -c my_core update.xml
Al ejecutar el comando anterior, obtendrá el siguiente resultado.
/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
Verificación
Visite la página de inicio de la interfaz web de Apache Solr y seleccione el núcleo como my_core. Intente recuperar todos los documentos pasando la consulta ":" en el área de textoqy ejecutar la consulta. Al ejecutar, puede observar que el documento está actualizado.
Actualización del documento mediante Java (API de cliente)
A continuación se muestra el programa Java para agregar documentos al índice Apache Solr. Guarde este código en un archivo con el nombreUpdatingDocument.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");
}
}
Compile el código anterior ejecutando los siguientes comandos en la terminal:
[[email protected] bin]$ javac UpdatingDocument
[[email protected] bin]$ java UpdatingDocument
Al ejecutar el comando anterior, obtendrá el siguiente resultado.
Documents updated