Чтобы удалить документы из индекса Apache Solr, нам нужно указать идентификаторы документов, которые нужно удалить, между тегами <delete> </ delete>.
<delete> <id>003</id> <id>005</id> <id>004</id> <id>002</id> </delete>
Здесь этот код XML используется для удаления документов с идентификаторами 003 и 005 . Сохраните этот код в файле с именем delete.xml .
Если вы хотите удалить документы из индекса, который принадлежит ядру с именем my_core , вы можете опубликовать файл delete.xml с помощью инструмента post , как показано ниже.
[Hadoop@localhost bin]$ ./post -c my_core delete.xml
Выполнив вышеуказанную команду, вы получите следующий вывод.
/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
верификация
Посетите домашнюю страницу веб-интерфейса Apache Solr и выберите ядро my_core . Попробуйте получить все документы, введя запрос «:» в текстовой области q и выполните запрос. При выполнении вы можете заметить, что указанные документы удалены.
Удаление поля
Иногда нам нужно удалить документы на основе полей, отличных от ID. Например, нам, возможно, придется удалить документы, где город Ченнай.
В таких случаях вам необходимо указать имя и значение поля в паре тегов <query> </ query>.
<delete> <query>city:Chennai</query> </delete>
Сохраните его как delete_field.xml и выполните операцию удаления в ядре с именем my_core с помощью инструмента post Solr.
[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml
При выполнении вышеупомянутой команды это производит следующий вывод.
/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
верификация
Посетите домашнюю страницу веб-интерфейса Apache Solr и выберите ядро my_core . Попробуйте получить все документы, введя запрос «:» в текстовой области q и выполните запрос. При выполнении вы можете заметить, что документы, содержащие указанную пару значений поля, удаляются.
Удаление всех документов
Как и при удалении определенного поля, если вы хотите удалить все документы из индекса, вам просто нужно вставить символ «:» между тегами <query> </ query>, как показано ниже.
<delete> <query>*:*</query> </delete>
Сохраните его как delete_all.xml и выполните операцию удаления в ядре с именем my_core с помощью инструмента post Solr.
[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml
При выполнении вышеупомянутой команды это производит следующий вывод.
/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
верификация
Посетите домашнюю страницу веб-интерфейса Apache Solr и выберите ядро как my_core . Попробуйте получить все документы, введя запрос «:» в текстовой области q и выполните запрос. При выполнении вы можете заметить, что документы, содержащие указанную пару значений поля, удаляются.
Удаление всех документов с использованием Java (Client API)
Ниже приведена Java-программа для добавления документов в индекс Apache Solr. Сохраните этот код в файле с именем UpdatingDocument.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"); } }
Скомпилируйте приведенный выше код, выполнив следующие команды в терминале:
[Hadoop@localhost bin]$ javac DeletingAllDocuments [Hadoop@localhost bin]$ java DeletingAllDocuments
Выполнив вышеуказанную команду, вы получите следующий вывод.