Je sais que l'on peut supprimer tous les documents d'un certain type via deleteByQuery.
Exemple:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}'
Mais je n'ai AUCUN terme et je veux simplement supprimer tous les documents de ce type, quel que soit le terme. Quelle est la meilleure pratique pour y parvenir? Le terme vide ne fonctionne pas.
elasticsearch
Michael Leiss
la source
la source
la source
-H 'Content-Type: application/json'
Depuis ElasticSearch 5.x, l'API delete_by_query est là par défaut
POST: http://localhost:9200/index/type/_delete_by_query
la source
Le commentaire de Torsten Engelbrecht dans la réponse de John Petrones s'est élargi:
(Je ne voulais pas modifier la réponse de John, car elle a reçu des votes positifs et est définie comme réponse, et j'ai peut-être introduit une erreur)
la source
Vous pouvez supprimer des documents du type avec la requête suivante:
J'ai testé cette requête dans Kibana et Elastic 5.5.2
la source
À partir d'Elasticsearch 2.x, la suppression n'est plus autorisée, car les documents restent dans l'index, provoquant une corruption de l'index.
la source
news1, news2 and so on
et de configurer un alias pour l'index actif actuel dunews
chemin. Bien sûr, le nom de l'index n'est qu'à titre d'exemple. Ici vous pouvez trouver un exemple complet pour [alias d'index] ( élastique.co / guide/en / elasticsearch / reference / current / … ) et un article qui explique une étude de cas.Les réponses ci-dessus ne fonctionnent plus avec ES 6.2.2 en raison de la vérification stricte du type de contenu pour les requêtes REST Elasticsearch . La
curl
commande que j'ai fini par utiliser est la suivante:la source
Dans la console Kibana :
la source
Vous avez ces alternatives:
1) Supprimer un index entier:
exemple:
Pour plus de détails, vous pouvez trouver ici - https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) Supprimer par requête à ceux qui correspondent:
* Ici, mentorz est un nom d'index et les utilisateurs est un type
la source
À partir de ES 1.5.3, l'API de suppression par requête est obsolète et est complètement supprimée depuis ES 2.0
Au lieu de l'API, la suppression par requête est désormais un plugin .
Pour utiliser le plugin Delete By Query, vous devez installer le plugin sur tous les nœuds du cluster:
L'utilisation du plugin est la même que l'ancienne API. Vous n'avez pas besoin de changer quoi que ce soit dans vos requêtes - ce plugin les fera simplement fonctionner.
* Pour obtenir des informations complètes sur pourquoi l'API a été supprimée, vous pouvez en savoir plus ici .
la source
(Réputation pas assez élevée pour commenter) La deuxième partie de la réponse de John Petrone fonctionne - aucune requête n'est nécessaire. Il supprimera le type et tous les documents contenus dans ce type, mais cela peut simplement être recréé chaque fois que vous indexez un nouveau document dans ce type.
Juste pour clarifier:
$ curl -XDELETE 'http://localhost:9200/twitter/tweet'
Remarque: ce ne supprimer le mappage! Mais comme mentionné précédemment, il peut être facilement reconfiguré en créant un nouveau document.
la source
J'utilise elasticsearch 7.5 et quand j'utilise
qui jettera ci-dessous l'erreur.
Je dois également ajouter un en-
-H 'Content-Type: application/json'
tête supplémentaire dans la demande pour que cela fonctionne.la source
Juste pour ajouter quelques centimes à cela.
Le "delete_by_query" mentionné en haut est toujours disponible en tant que plugin dans elasticsearch 2.x.
Bien que dans la dernière version à venir 5.x, il sera remplacé par "supprimer par requête api"
la source
Elasticsearch 2.3 l'option
dans elasticsearch.yml faire le voyage
la source
Si vous souhaitez supprimer le document en fonction d'une date. Vous pouvez utiliser la console kibana (v.6.1.2)
la source