Apache Solr - Eliminazione di documenti

Eliminazione del documento

Per eliminare documenti dall'indice di Apache Solr, è necessario specificare gli ID dei documenti da eliminare tra i tag <delete> </delete>.

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

Qui, questo codice XML viene utilizzato per eliminare i documenti con ID 003 e 005. Salva questo codice in un file con il nomedelete.xml.

Se vuoi eliminare i documenti dall'indice che appartiene al core denominato my_core, quindi puoi pubblicare il file delete.xml file utilizzando l'estensione post strumento, come mostrato di seguito.

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

Eseguendo il comando precedente, otterrai il seguente output.

/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

Visita la home page dell'interfaccia web di Apache Solr e seleziona il core come my_core. Prova a recuperare tutti i documenti passando la query ":" nell'area di testoqed eseguire la query. Durante l'esecuzione, è possibile osservare che i documenti specificati vengono eliminati.

Eliminazione di un campo

A volte è necessario eliminare i documenti in base a campi diversi dall'ID. Ad esempio, potremmo dover eliminare i documenti in cui la città è Chennai.

In questi casi, è necessario specificare il nome e il valore del campo all'interno della coppia di tag <query> </query>.

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

Salvalo come delete_field.xml ed eseguire l'operazione di cancellazione sul core denominato my_core usando il post strumento di Solr.

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

Quando si esegue il comando precedente, produce il seguente output.

/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

Visita la home page dell'interfaccia web di Apache Solr e seleziona il core come my_core. Prova a recuperare tutti i documenti passando la query ":" nell'area di testoqed eseguire la query. Durante l'esecuzione, è possibile osservare che i documenti contenenti la coppia di valori di campo specificata vengono eliminati.

Eliminazione di tutti i documenti

Proprio come per eliminare un campo specifico, se vuoi eliminare tutti i documenti da un indice, devi solo passare il simbolo ":" tra i tag <query> </ query>, come mostrato di seguito.

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

Salvalo come delete_all.xml ed eseguire l'operazione di cancellazione sul core denominato my_core usando il post strumento di Solr.

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

Quando si esegue il comando precedente, produce il seguente output.

/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

Visita la home page dell'interfaccia web di Apache Solr e seleziona il core come my_core. Prova a recuperare tutti i documenti passando la query ":" nell'area di testoqed eseguire la query. Durante l'esecuzione, è possibile osservare che i documenti contenenti la coppia di valori di campo specificata vengono eliminati.

Eliminazione di tutti i documenti utilizzando Java (API client)

Di seguito è riportato il programma Java per aggiungere documenti all'indice Apache Solr. Salva questo codice in un file con il 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"); 
   } 
}

Compilare il codice sopra eseguendo i seguenti comandi nel terminale:

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

Eseguendo il comando precedente, otterrai il seguente output.

Documents deleted