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.
![](https://post.nghiatu.com/assets/tutorial/apache_solr/images/delete_document.jpg)
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.
![](https://post.nghiatu.com/assets/tutorial/apache_solr/images/value_pair.jpg)
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.
![](https://post.nghiatu.com/assets/tutorial/apache_solr/images/deleted_value_pair.jpg)
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