Apache Solr - Eliminación de documentos

Eliminar el documento

Para eliminar documentos del índice de Apache Solr, necesitamos especificar los ID de los documentos que se eliminarán entre las etiquetas <delete> </delete>.

<delete>   
   <id>003</id>   
   <id>005</id> 
   <id>004</id> 
   <id>002</id> 
</delete>

Aquí, este código XML se utiliza para eliminar los documentos con ID 003 y 005. Guarde este código en un archivo con el nombredelete.xml.

Si desea eliminar los documentos del índice que pertenece al núcleo llamado my_core, luego puedes publicar el delete.xml archivo usando el post herramienta, como se muestra a continuación.

[[email protected] bin]$ ./post -c my_core delete.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 delete.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 delete.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.179

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 los documentos especificados se eliminan.

Eliminar un campo

A veces necesitamos eliminar documentos basados ​​en campos que no sean ID. Por ejemplo, es posible que tengamos que eliminar los documentos de la ciudad de Chennai.

En tales casos, debe especificar el nombre y el valor del campo dentro del par de etiquetas <query> </query>.

<delete> 
   <query>city:Chennai</query> 
</delete>

Guardarlo como delete_field.xml y realizar la operación de eliminación en el núcleo llamado my_core utilizando la post herramienta de Solr.

[[email protected] bin]$ ./post -c my_core delete_field.xml

Al ejecutar el comando anterior, produce 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 delete_field.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 delete_field.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.084

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 los documentos que contienen el par de valores de campo especificado se eliminan.

Eliminar todos los documentos

Al igual que eliminar un campo específico, si desea eliminar todos los documentos de un índice, solo necesita pasar el símbolo “:” entre las etiquetas <query> </ query>, como se muestra a continuación.

<delete> 
   <query>*:*</query> 
</delete>

Guardarlo como delete_all.xml y realizar la operación de eliminación en el núcleo llamado my_core utilizando la post herramienta de Solr.

[[email protected] bin]$ ./post -c my_core delete_all.xml

Al ejecutar el comando anterior, produce 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 deleteAll.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 deleteAll.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.138

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 los documentos que contienen el par de valores de campo especificado se eliminan.

Eliminar todos los documentos usando 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.common.SolrInputDocument;  

public class DeletingAllDocuments { 
   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();   
          
      //Deleting the documents from Solr 
      Solr.deleteByQuery("*");        
         
      //Saving the document 
      Solr.commit(); 
      System.out.println("Documents deleted"); 
   } 
}

Compile el código anterior ejecutando los siguientes comandos en la terminal:

[[email protected] bin]$ javac DeletingAllDocuments 
[[email protected] bin]$ java DeletingAllDocuments

Al ejecutar el comando anterior, obtendrá el siguiente resultado.

Documents deleted