Comment supprimer tous les documents de mon index SOLR à l'aide de l'administrateur SOLR.
J'ai essayé d'utiliser l'URL et cela fonctionne mais je veux savoir si la même chose peut être faite en utilisant l'administrateur ..
Mise à jour: les nouvelles versions de Solr peuvent mieux fonctionner avec cette réponse: https://stackoverflow.com/a/48007194/3692256
Ma réponse originale est ci-dessous:
Je triche un peu, mais pas autant que d'écrire la requête à la main.
Depuis que j'ai déjà ressenti la douleur de suppressions accidentelles, j'essaye de tromper mes suppressions autant que possible (dans tout type de magasin de données).
1) Exécutez une requête dans l'écran Solr Admin Query, en utilisant uniquement le paramètre "q" en haut à gauche. Limitez-le aux éléments que vous souhaitez réellement supprimer. Pour cet exemple, j'utilise *:*
, mais vous pouvez utiliser des choses comme id:abcdef
ou une plage ou autre. Si vous avez une requête complexe et folle, il peut être plus facile de le faire plusieurs fois, une fois pour chaque partie des données que vous souhaitez supprimer.
2) En plus des résultats, il y a une URL grisée. Si vous passez la souris dessus, elle devient noire. Il s'agit de l'URL qui a été utilisée pour obtenir les résultats. Faites un clic droit (contexte) dessus et ouvrez-le dans un nouvel onglet/fenêtre. Vous devriez obtenir quelque chose comme:
http://localhost:8983/solr/my_core_name/select?q=*%3A*&wt=json&indent=true
Maintenant, je veux le mettre dans un format de suppression. Je remplace le select?q=
avec update?commit=true&stream.body=<delete><query>
et, à la fin, le &wt=json&indent=true
avec </query></delete>
.
Je me retrouve donc avec:
http://localhost:8983/solr/my_core_name/update?commit=true&stream.body=<delete><query>*%3A*</query></delete>
Respirez profondément, faites tout ce que vous faites pour avoir de la chance et soumettez l'URL (entrez les œuvres clés).
Maintenant, vous devriez pouvoir revenir à la page d'administration de Solr et exécuter la requête d'origine et obtenir zéro résultat.
Utilisez l'une des requêtes ci-dessous dans l'onglet Document de l'interface utilisateur Solr Admin:
XML:
<delete><query>*:*</query></delete>
JSON:
{'delete': {'query': '*:*'}}
Assurez-vous de sélectionner la liste déroulante Document Type
Jusqu'à Solr Command (raw XML or JSON)
.
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 />'
Cette solution n'est applicable que si vous supprimez tous les documents dans plusieurs collections et non pour une suppression sélective:
J'ai eu le même scénario, où je devais supprimer tous les documents dans plusieurs collections. Il y avait près de 500 000 documents dans chaque fragment et il y avait plusieurs fragments de chaque collection. La mise à jour et la suppression des documents à l'aide de la requête était une tâche importante et a donc suivi le processus ci-dessous:
http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json
Cela donne les détails comme le nom de la collection, numShards, configname, router.field, maxShards, replicationFactor, etc.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
J'ai exécuté les étapes ci-dessus en boucle pour toutes les collections et cela a été fait en quelques secondes pour environ 100 collections avec d'énormes données. De plus, j'avais aussi les sauvegardes pour toutes les collections.
Reportez-vous à cela pour les autres API Solr: DELETEALIAS: Supprimer un alias de collection, Entrée