web-dev-qa-db-fra.com

Supprimer des données de ElasticSearch

Je suis nouveau sur ElasticSearch . J'essaie de comprendre comment supprimer des données d'ElasticSearch. J'ai supprimé mes index. Cependant, cela ne semble pas supprimer les données elles-mêmes. Les autres éléments que j'ai vus pointent vers la fonctionnalité Supprimer par requête . Cependant, je ne sais même pas sur quoi interroger. Je connais mes index. Essentiellement, je voudrais savoir comment faire un

DELETE FROM [Index]

De PostMan dans Chrome. Cependant, je n'ai aucune chance. Il semble que peu importe ce que je fais, les données traînent. Jusqu'ici, j'ai réussi à supprimer les index en utilisant le verbe DELETE HTTP dans PostMan et en utilisant une adresse URL telle que:

   http://localhost:9200/[indexName]

Cependant, cela ne semble pas supprimer réellement les données (docs) elles-mêmes.

299
user687554

Vous pouvez supprimer à l'aide de cURL ou visuellement à l'aide de l'un des nombreux outils créés par les enthousiastes de l'open source pour Elasticsearch.

Utilisation de cURL

curl -XDELETE localhost:9200/index/type/documentID

par exemple.

curl -XDELETE localhost:9200/shop/product/1

Vous recevrez ensuite une réponse indiquant si cela a réussi ou non. Vous pouvez également supprimer un index entier ou des types avec un index. Vous pouvez également supprimer un type en omettant l'identifiant du document, comme ceci:

curl -XDELETE localhost:9200/shop/product

Si vous souhaitez supprimer un index -

curl -XDELETE localhost:9200/shop

Si vous souhaitez supprimer plusieurs index qui suivent une certaine convention de dénomination (notez le *, un caractère générique), -

curl -XDELETE localhost:9200/.mar* 

visuellement

Il existe différents outils, comme mentionné ci-dessus, je ne les énumérerai pas ici, mais je vous renverrai à un outil qui vous permet de commencer immédiatement, situé ici . Cet outil s'appelle KOPF. Pour vous connecter à votre hôte, veuillez cliquer sur le logo situé dans le coin supérieur gauche et entrez l'URL de votre cluster.

Une fois connecté, vous pourrez administrer l’ensemble de votre cluster, supprimer, optimiser et ajuster votre cluster.

353
Nathan

Si vous avez besoin de supprimer tous les index, cela peut être utile:

curl -X DELETE 'http://localhost:9200/_all'

Powershell:

Invoke-WebRequest -method DELETE http://localhost:9200/_all
402
kha

Le documentation (ou Le Guide définitif ) indique que vous pouvez également utiliser la requête suivante pour supprimer tout indices:

curl -XDELETE 'http://localhost:9200/*'

Et il y a une note importante:

Pour certains, la possibilité de supprimer toutes vos données avec une seule commande est une perspective très effrayante. Si vous souhaitez éliminer la possibilité d’une suppression massive accidentelle, vous pouvez définir le paramètre suivant sur true dans votre elasticsearch.yml:

action.destructive_requires_name: true

47
skovorodkin

Vous devez envoyer une demande DELETE à

http://[your_Host]:9200/[your_index_name_here]

Vous pouvez également supprimer un seul document:

http://[your_Host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id]

Je vous suggère d'utiliser astichammer .

Après la suppression, vous pouvez rechercher si l’index existe toujours avec l’URL suivante: http://[your_Host]:9200/_stats/

Bonne chance!

25
Jesper

La suppression de l'index supprimera le mappage et le type. vous pouvez supprimer toutes les lignes à l'aide de la requête suivante

curl -XDELETE 'localhost:9200/Twitter/Tweet/_query?pretty' -d'
{
   "query": { 
      "match_all": 
   }
}'

Cependant, pour la requête ci-dessus, vous devez installer le plug-in delete-by-query à partir de la version 2.0.0-beta1 d'Elasticsearch. La suppression par requête a été supprimée de l'API principale.

Install delete-by-query plugin

Sudo bin/plugin install delete-by-query

Pour plus

http://blog.appliedinformaticsinc.com/how-to-delete-elasticsearch-data-records-by-dsl-query/

14
shahid ashraf
#list all index:       curl -XGET http://localhost:9200/_cat/indices?v 

enter image description here

#delete index:         curl -XDELETE 'localhost:9200/index_name'
#delete all indices:   curl -XDELETE 'localhost:9200/_all'
#delete document   :   curl -XDELETE 'localhost:9200/index_name/type_name/document_id'

Installez kibana . Kibana a un outil de développement plus intelligent qui permet de créer facilement une requête.

enter image description here

10
ysk

Pour la suppression en masse par requête, vous pouvez utiliser la commande spéciale suppression par l'API de requête :

$ curl -XDELETE 'http://localhost:9200/Twitter/Tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

Dans l'histoire, cette API a été supprimée puis réintroduite

Qui intéressant, il a une longue histoire.

  1. Dans la première version de cette réponse, je renvoie à la documentation de elasticsearch version 1.6 . Dans cette fonctionnalité, cette fonctionnalité était marquée comme obsolète mais fonctionnait bien.
  2. Dans elasticsearch version 2.0, il a été déplacé vers un plugin séparé . Et même les raisons pour lesquelles il est devenu plugin expliqué .
  3. Et il à nouveau apparu dans l'API de base dans la version 5. !
6
Hubbitus

Vous pouvez supprimer un index dans python comme suit

from elasticsearch import Elasticsearch

es = Elasticsearch([{'Host':'localhost', 'port':'9200'}])

es.index(index='grades',doc_type='ist_samester',id=1,body={
    "Name":"Programming Fundamentals",
    "Grade":"A"
})

es.indices.delete(index='grades')
6
Farid ullah

manière la plus simple!

Endpoint :
http://localhost:9201/Twitter/_delete_by_query

Payload :
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

Twitter est l'index de la recherche élastique

ref; https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

5
Edwin Ikechukwu

Il y a beaucoup de bonnes réponses ici, mais il y a aussi une chose que j'aimerais ajouter:

  • Si vous exécutez service AWS ElasticSearch, vous ne pouvez pas supprimer/supprimer des index. Au lieu de supprimer des index, vous devez les réindexer .
4
Facundo La Rocca

Vous pouvez supprimer un index entier, un type de document ou un identifiant particulier. Ce sont les trois façons:

  1. curl -XDELETE localhost:9200/index_name

  2. curl -XDELETE localhost:9200/index_name/doc-type

  3. curl -XDELETE localhost:9200/index_name/doc-type/documentId

et si vous souhaitez supprimer tout l'index, optez pour un caractère générique.

3
Gaurav

Pour lister les index curl -L localhost:9200/_cat/indices

9200 port par défaut [change le port si vous utilisez un autre port]

Vous trouverez probablement tous les index commençant par logstash-yyyy-mm-dd format (logstash- *)

Vous pouvez voir tous les indices et utiliser

Pour supprimer les indices et les données, déclenchez la commande suivante.

curl -XDELETE localhost:9200/index_name (Qui supprimera les données et les index à la fois).

3
rajdeepbs29

Je voulais supprimer logstash index et beaucoup de recherches sur différents outils comme curl. Mais trouvé la solution à la fin. Connectez-vous à Kibana. Allez dans l'onglet Outils de développement et tapez DELETE /logstash-* dans le champ de requête, puis appuyez sur le bouton en forme de flèche verte. si vous obtenez "acquitté": true en réponse, cela signifie que les données ont été effacées.

3
Ashish Kumar

Vous pouvez également supprimer l'index en utilisant l'action DELETE dans 'elasticsearch head' ( plugin Chrome ). Ajoutez-le à votre chrome et connectez-le à votre hôte. Vous y trouverez tous vos index et, si vous cliquez sur le bouton Actions situé sous l’index que vous souhaitez supprimer, vous trouverez une option SUPPRIMER dans le menu déroulant. cliquez dessus et entrez SUPPRIMER dans la fenêtre contextuelle. Votre index sera supprimé. L'extension 'Elasticsearch head' constitue un moyen simple d'afficher et de gérer vos index et vos données.

2
prateek kumar
curl -X DELETE 'https://localhost:9200/_all'

Remplacez http par https si vous utilisez un certificat SSL dans votre application.

1
Vikash Chauhan