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?
Dans la documentation, utilisez cette notation:
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.delete(index='test-index', ignore=[400, 404])
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()