Учебники

Apache Solr — Удаление документов

Чтобы удалить документы из индекса 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

Выполнив вышеуказанную команду, вы получите следующий вывод.