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