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