web-dev-qa-db-fra.com

Elasticsearch: Comment supprimer un index en utilisant python

Pardonnez-moi si ceci est assez basique, mais j’ai Python 2.7 et Elasticsearch 2.1.1 et j’essaie simplement de supprimer un index à l’aide de 

es.delete(index='researchtest', doc_type='test')

mais cela me donne 

return func(*args, params=params, **kwargs)
TypeError: delete() takes at least 4 arguments (4 given)

J'ai aussi essayé 

es.delete_by_query(index='researchtest', doc_type='test',body='{"query":{"match_all":{}}}')

mais je reçois

AttributeError: 'Elasticsearch' object has no attribute 'delete_by_query'

Une idée pourquoi? L'API a-t-il changé pour 2.1.1 pour Python? 

https://elasticsearch-py.readthedocs.org/fr/master/api.html#elasticsearch.client.IndicesClient.delete

35
AbtPst

Dans la documentation, utilisez cette notation:

from elasticsearch import Elasticsearch
es = Elasticsearch()

es.indices.delete(index='test-index', ignore=[400, 404])
63
ferdy

Si vous avez un objet document (modèle) et que vous utilisez elasticsearch-dsl, vous pouvez appeler directement la méthode delete de l'attribut _index de votre modèle, spécialement avec Python-3.X.

ClassName._index.delete()

Aussi comme c'est indiqué dans la documentation :

L'attribut _index héberge également la méthode load_mappings qui mettra à jour le mappage sur l'index à partir d'elasticsearch. Ceci est très utile si vous utilisez des mappages dynamiques et souhaitez que la classe soit consciente de ces champs (par exemple, si vous souhaitez que les champs Date soient correctement (dés) sérialisés):

Post._index.load_mappings()
0
Kasrâmvd