Apache Solr - Suppression de documents

Suppression du document

Pour supprimer des documents de l'index d'Apache Solr, nous devons spécifier les ID des documents à supprimer entre les balises <delete> </delete>.

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

Ici, ce code XML est utilisé pour supprimer les documents avec des ID 003 et 005. Enregistrez ce code dans un fichier avec le nomdelete.xml.

Si vous souhaitez supprimer les documents de l'index qui appartient au noyau nommé my_core, alors vous pouvez publier le delete.xml fichier en utilisant le post outil, comme indiqué ci-dessous.

[[email protected] bin]$ ./post -c my_core delete.xml

En exécutant la commande ci-dessus, vous obtiendrez la sortie suivante.

/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

Vérification

Visitez la page d'accueil de l'interface Web d'Apache Solr et sélectionnez le noyau comme my_core. Essayez de récupérer tous les documents en passant la requête «:» dans la zone de texteqet exécutez la requête. Lors de l'exécution, vous pouvez observer que les documents spécifiés sont supprimés.

Supprimer un champ

Parfois, nous devons supprimer des documents en fonction de champs autres que ID. Par exemple, il se peut que nous devions supprimer les documents où la ville est Chennai.

Dans de tels cas, vous devez spécifier le nom et la valeur du champ dans la paire de balises <query> </query>.

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

Enregistrez-le sous delete_field.xml et effectuez l'opération de suppression sur le noyau nommé my_core en utilisant le post outil de Solr.

[[email protected] bin]$ ./post -c my_core delete_field.xml

Lors de l'exécution de la commande ci-dessus, il produit la sortie suivante.

/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

Vérification

Visitez la page d'accueil de l'interface Web d'Apache Solr et sélectionnez le noyau comme my_core. Essayez de récupérer tous les documents en passant la requête «:» dans la zone de texteqet exécutez la requête. Lors de l'exécution, vous pouvez observer que les documents contenant la paire de valeurs de champ spécifiée sont supprimés.

Suppression de tous les documents

Tout comme la suppression d'un champ spécifique, si vous souhaitez supprimer tous les documents d'un index, il vous suffit de passer le symbole «:» entre les balises <query> </ query>, comme indiqué ci-dessous.

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

Enregistrez-le sous delete_all.xml et effectuez l'opération de suppression sur le noyau nommé my_core en utilisant le post outil de Solr.

[[email protected] bin]$ ./post -c my_core delete_all.xml

Lors de l'exécution de la commande ci-dessus, il produit la sortie suivante.

/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

Vérification

Visitez la page d'accueil de l'interface Web d'Apache Solr et sélectionnez le noyau comme my_core. Essayez de récupérer tous les documents en passant la requête «:» dans la zone de texteqet exécutez la requête. Lors de l'exécution, vous pouvez observer que les documents contenant la paire de valeurs de champ spécifiée sont supprimés.

Suppression de tous les documents à l'aide de Java (API client)

Voici le programme Java pour ajouter des documents à l'index Apache Solr. Enregistrez ce code dans un fichier avec le nomUpdatingDocument.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"); 
   } 
}

Compilez le code ci-dessus en exécutant les commandes suivantes dans le terminal -

[[email protected] bin]$ javac DeletingAllDocuments 
[[email protected] bin]$ java DeletingAllDocuments

En exécutant la commande ci-dessus, vous obtiendrez la sortie suivante.

Documents deleted