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