Удаление 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 тысяч документов, и в каждой коллекции было несколько осколков. Обновление и удаление документов с использованием запроса было большой задачей и, следовательно, следовало следующему процессу:

  1. Использовал Solr API для получения деталей для всех коллекций -
    http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json
    
    Это дает такие данные, как имя коллекции, numShards, configname, router.field, maxShards, replicationFactor и т.д.
  2. Сохраненные выходные данные json с указанными выше деталями в файле для дальнейшего использования и создавали резервные копии всех коллекций, в которых мне нужно было удалить документы, используя следующий API:
    http://<solr-ip>:<port>/solr/admin/collections?action=BACKUP&name=myBackupName&collection=myCollectionName&location=/path/to/my/shared/drive
    
  3. Далее я удалил все коллекции, которые мне нужны, чтобы удалить все документы для использования следующего:
    http://<solr-ip>:<port>/solr/admin/collections?action=DELETEALIAS&name=collectionname
    
  4. Пересоздайте все коллекции, используя сведения из шага 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)
    • /Обновить
  • тип документа
    • /JSON
  • Документ (ы) { delete:{id:THE_DOCUMENT_ID_YOU_WISH_TO_DELETE} }