Apache Solr - Excluindo Documentos

Excluindo o Documento

Para excluir documentos do índice do Apache Solr, precisamos especificar os IDs dos documentos a serem excluídos entre as tags <delete> </delete>.

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

Aqui, este código XML é usado para excluir os documentos com ID's 003 e 005. Salve este código em um arquivo com o nomedelete.xml.

Se você deseja deletar os documentos do índice que pertence ao núcleo denominado my_core, então você pode postar o delete.xml arquivo usando o post ferramenta, como mostrado abaixo.

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

Ao executar o comando acima, você obterá a seguinte saída.

/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

Verificação

Visite a página inicial da interface da web do Apache Solr e selecione o núcleo como my_core. Tente recuperar todos os documentos passando a consulta “:” na área de textoqe execute a consulta. Ao executar, você pode observar que os documentos especificados são excluídos.

Excluindo um Campo

Às vezes, precisamos excluir documentos com base em campos diferentes do ID. Por exemplo, podemos ter que excluir os documentos em que a cidade é Chennai.

Nesses casos, você precisa especificar o nome e o valor do campo no par de tags <query> </query>.

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

Salvar como delete_field.xml e execute a operação de exclusão no núcleo chamado my_core usando o post ferramenta do Solr.

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

Ao executar o comando acima, ele produz a seguinte saída.

/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

Verificação

Visite a página inicial da interface da web do Apache Solr e selecione o núcleo como my_core. Tente recuperar todos os documentos passando a consulta “:” na área de textoqe execute a consulta. Ao executar, você pode observar que os documentos que contêm o par de valores de campo especificado são excluídos.

Apagando todos os documentos

Assim como na exclusão de um campo específico, se você deseja excluir todos os documentos de um índice, basta passar o símbolo “:” entre as tags <consulta> </ consulta>, conforme mostrado abaixo.

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

Salvar como delete_all.xml e execute a operação de exclusão no núcleo chamado my_core usando o post ferramenta do Solr.

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

Ao executar o comando acima, ele produz a seguinte saída.

/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

Verificação

Visite a página inicial da interface da web do Apache Solr e selecione o núcleo como my_core. Tente recuperar todos os documentos passando a consulta “:” na área de textoqe execute a consulta. Ao executar, você pode observar que os documentos que contêm o par de valores de campo especificado são excluídos.

Excluir todos os documentos usando Java (API cliente)

A seguir está o programa Java para adicionar documentos ao índice do Apache Solr. Salve este código em um arquivo com o nomeUpdatingDocument.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 o código acima executando os seguintes comandos no terminal -

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

Ao executar o comando acima, você obterá a seguinte saída.

Documents deleted