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