Как удалить все документы в моем индексе SOLR с помощью SOLR Admin.
Я попытался использовать url, и он работает, но вы хотите знать, можно ли это сделать с помощью Admin..
Как удалить все документы в моем индексе SOLR с помощью SOLR Admin.
Я попытался использовать url, и он работает, но вы хотите знать, можно ли это сделать с помощью Admin..
Используйте один из запросов ниже на вкладке "Документ" пользовательского интерфейса администратора Solr:
XML:
<delete><query>*:*</query></delete>
JSON:
{'delete': {'query': '*:*'}}
Убедитесь, что в раскрывающемся Solr Command (raw XML or JSON)
Document Type
выбрана команда Solr Command (raw XML or JSON)
.
Обновление: новые версии Solr могут лучше работать с этим ответом: fooobar.com/questions/354423/...
Мой оригинальный ответ ниже:
Я немного изменяю, но не так сильно, как пишу запрос вручную.
Поскольку раньше я испытывал боль от случайного удаления, я стараюсь максимально обезопасить свои удаления (в любом виде хранилища данных).
1) Запустите запрос на экране Solr Admin Query, используя только параметр "q" в левом верхнем углу. Сузьте это до элементов, которые вы действительно хотите удалить. Для этого примера я использую *:*
, но вы можете использовать такие вещи, как id:abcdef
или диапазон или что-то еще. Если у вас сложный сложный запрос, вам может быть проще сделать это несколько раз, по одному разу для каждой части данных, которые вы хотите удалить.
2) В верхней части результатов отображается неактивный URL. Если навести указатель мыши на него, он станет черным. Это URL, который был использован для получения результатов. Щелкните правой кнопкой мыши по контексту и откройте его в новой вкладке/окне. Вы должны получить что-то вроде:
http://localhost:8983/solr/my_core_name/select?q=*%3A*&wt=json&indent=true
Теперь я хочу получить его в формате удаления. Я заменяю select?q=
на update?commit=true&stream.body=<delete><query>
и, в конце, &wt=json&indent=true
на </query></delete>
.
Итак, я в итоге:
http://localhost:8983/solr/my_core_name/update?commit=true&stream.body=<delete><query>*%3A*</query></delete>
Сделайте глубокий вдох, делайте все, что вы делаете для удачи, и отправьте URL (введите ключевые работы).
Теперь вы сможете вернуться на страницу администрирования Solr, выполнить исходный запрос и получить нулевые результаты.
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<commit />'
Это решение применимо, только если вы удаляете все документы в нескольких коллекциях, а не для выборочного удаления:
У меня был тот же сценарий, где мне нужно было удалить все документы в нескольких коллекциях. В каждом осколке было около 500 тысяч документов, и в каждой коллекции было несколько осколков. Обновление и удаление документов с использованием запроса было большой задачей и, следовательно, следовало следующему процессу:
http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json
Это дает такие данные, как имя коллекции, numShards, configname, router.field, maxShards, replicationFactor и т.д.http://<solr-ip>:<port>/solr/admin/collections?action=BACKUP&name=myBackupName&collection=myCollectionName&location=/path/to/my/shared/drive
http://<solr-ip>:<port>/solr/admin/collections?action=DELETEALIAS&name=collectionname
http://<solr-ip>:<port>/solr/admin/collections?action=CREATE&name=collectionname&numShards=number&replicationFactor=number&maxShardsPerNode=number&collection.configName=configname&router.field=routerfield
Я выполнил вышеупомянутые шаги в цикле для всех коллекций и был сделан за секунды приблизительно для 100 коллекций с огромными данными. Кроме того, у меня были резервные копии для всех коллекций.
См. это для других API Solr: DELETEALIAS: удалить псевдоним коллекции, ввод
На левой панели выберите нужную коллекцию> Документы
Заполните поля:
{ delete:{id:THE_DOCUMENT_ID_YOU_WISH_TO_DELETE} }