Apache Solr - usuwanie dokumentów
Usuwanie dokumentu
Aby usunąć dokumenty z indeksu Apache Solr, musimy podać identyfikatory dokumentów do usunięcia między tagami <delete> </delete>.
<delete>
<id>003</id>
<id>005</id>
<id>004</id>
<id>002</id>
</delete>
Tutaj ten kod XML służy do usuwania dokumentów z identyfikatorami 003 i 005. Zapisz ten kod w pliku o nazwiedelete.xml.
Jeśli chcesz usunąć dokumenty z indeksu, który należy do rdzenia o nazwie my_core, możesz opublikować delete.xml plik przy użyciu rozszerzenia post narzędzie, jak pokazano poniżej.
[Hadoop@localhost bin]$ ./post -c my_core delete.xml
Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.
/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
Weryfikacja
Odwiedź stronę główną interfejsu internetowego Apache Solr i wybierz rdzeń jako my_core. Spróbuj pobrać wszystkie dokumenty, przekazując zapytanie „:” w polu tekstowymqi wykonaj zapytanie. Podczas wykonywania można zauważyć, że określone dokumenty są usuwane.
Usuwanie pola
Czasami musimy usunąć dokumenty na podstawie innych pól niż ID. Na przykład może być konieczne usunięcie dokumentów, w których znajduje się miasto Chennai.
W takich przypadkach musisz określić nazwę i wartość pola w parze tagów <query> </query>.
<delete>
<query>city:Chennai</query>
</delete>
Zapisz to jako delete_field.xml i wykonaj operację usuwania na rdzeniu o nazwie my_core używając post narzędzie Solr.
[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml
Wykonując powyższe polecenie, generuje następujące dane wyjściowe.
/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
Weryfikacja
Odwiedź stronę główną interfejsu internetowego Apache Solr i wybierz rdzeń jako my_core. Spróbuj pobrać wszystkie dokumenty, przekazując zapytanie „:” w polu tekstowymqi wykonaj zapytanie. Podczas wykonywania można zauważyć, że dokumenty zawierające określoną parę wartości pola są usuwane.
Usuwanie wszystkich dokumentów
Podobnie jak w przypadku usuwania określonego pola, jeśli chcesz usunąć wszystkie dokumenty z indeksu, wystarczy przekazać symbol „:” między tagami <query> </ query>, jak pokazano poniżej.
<delete>
<query>*:*</query>
</delete>
Zapisz to jako delete_all.xml i wykonaj operację usuwania na rdzeniu o nazwie my_core używając post narzędzie Solr.
[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml
Wykonując powyższe polecenie, generuje następujące dane wyjściowe.
/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
Weryfikacja
Odwiedź stronę główną interfejsu internetowego Apache Solr i wybierz rdzeń jako my_core. Spróbuj pobrać wszystkie dokumenty, przekazując zapytanie „:” w polu tekstowymqi wykonaj zapytanie. Podczas wykonywania można zauważyć, że dokumenty zawierające określoną parę wartości pola są usuwane.
Usuwanie wszystkich dokumentów za pomocą Java (Client API)
Poniżej znajduje się program Java do dodawania dokumentów do indeksu Apache Solr. Zapisz ten kod w pliku o nazwieUpdatingDocument.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");
}
}
Skompiluj powyższy kod, wykonując następujące polecenia w terminalu -
[Hadoop@localhost bin]$ javac DeletingAllDocuments
[Hadoop@localhost bin]$ java DeletingAllDocuments
Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.
Documents deleted