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и выполните запрос. При выполнении вы можете заметить, что указанные документы удаляются.

Удаление поля

Иногда нам нужно удалить документы на основе полей, отличных от идентификатора. Например, нам может потребоваться удалить документы, в которых указан город Ченнаи.

В таких случаях вам необходимо указать имя и значение поля в паре тегов <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

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

Documents deleted