Удаление Solr-документов из Solr Admin
Как удалить все документы в моем индексе SOLR с помощью SOLR Admin.
Я попытался использовать url, и он работает, но вы хотите знать, можно ли это сделать с помощью Admin..
Ответы
Ответ 1
Используйте один из запросов ниже на вкладке "Документ" пользовательского интерфейса администратора Solr:
XML:
<delete><query>*:*</query></delete>
JSON:
{'delete': {'query': '*:*'}}
Убедитесь, что в раскрывающемся Solr Command (raw XML or JSON)
Document Type
выбрана команда Solr Command (raw XML or JSON)
.
Ответ 2
Обновление: новые версии 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, выполнить исходный запрос и получить нулевые результаты.
Ответ 3
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 />'
Ответ 4
Это решение применимо, только если вы удаляете все документы в нескольких коллекциях, а не для выборочного удаления:
У меня был тот же сценарий, где мне нужно было удалить все документы в нескольких коллекциях. В каждом осколке было около 500 тысяч документов, и в каждой коллекции было несколько осколков. Обновление и удаление документов с использованием запроса было большой задачей и, следовательно, следовало следующему процессу:
- Использовал Solr API для получения деталей для всех коллекций -
http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json
Это дает такие данные, как имя коллекции, numShards, configname, router.field, maxShards, replicationFactor и т.д.
- Сохраненные выходные данные json с указанными выше деталями в файле для дальнейшего использования и создавали резервные копии всех коллекций, в которых мне нужно было удалить документы, используя следующий API:
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
- Пересоздайте все коллекции, используя сведения из шага 1 и следующий API:
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: удалить псевдоним коллекции, ввод
Ответ 5
На левой панели выберите нужную коллекцию> Документы
Заполните поля:
- Обработчик запросов (qt)
- тип документа
- Документ (ы)
{ delete:{id:THE_DOCUMENT_ID_YOU_WISH_TO_DELETE} }