Apache Solr - Löschen von Dokumenten

Dokument löschen

Um Dokumente aus dem Index von Apache Solr zu löschen, müssen Sie die IDs der zu löschenden Dokumente zwischen den Tags <delete> </ delete> angeben.

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

Hier wird dieser XML-Code verwendet, um die Dokumente mit IDs zu löschen 003 und 005. Speichern Sie diesen Code in einer Datei mit dem Namendelete.xml.

Wenn Sie die Dokumente aus dem Index löschen möchten, der zum genannten Kern gehört my_core, dann kannst du das posten delete.xml Datei mit der post Werkzeug, wie unten gezeigt.

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass die angegebenen Dokumente gelöscht werden.

Ein Feld löschen

Manchmal müssen wir Dokumente basierend auf anderen Feldern als ID löschen. Zum Beispiel müssen wir möglicherweise die Dokumente löschen, in denen die Stadt Chennai ist.

In solchen Fällen müssen Sie den Namen und den Wert des Felds innerhalb des Tag-Paares <query> </ query> angeben.

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

Speichern Sie es als delete_field.xml und führen Sie den Löschvorgang für den genannten Kern aus my_core Verwendung der post Werkzeug von Solr.

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

Bei Ausführung des obigen Befehls wird die folgende Ausgabe erzeugt.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass die Dokumente, die das angegebene Feldwertpaar enthalten, gelöscht werden.

Alle Dokumente löschen

Wenn Sie wie beim Löschen eines bestimmten Felds alle Dokumente aus einem Index löschen möchten, müssen Sie nur das Symbol ":" zwischen den Tags <Abfrage> </ query> übergeben, wie unten gezeigt.

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

Speichern Sie es als delete_all.xml und führen Sie den Löschvorgang für den genannten Kern aus my_core Verwendung der post Werkzeug von Solr.

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

Bei Ausführung des obigen Befehls wird die folgende Ausgabe erzeugt.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass die Dokumente, die das angegebene Feldwertpaar enthalten, gelöscht werden.

Löschen aller Dokumente mit Java (Client API)

Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenUpdatingDocument.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"); 
   } 
}

Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

Documents deleted