Perdonami se questo è abbastanza semplice, ma ho Python 2.7 e Elasticsearch 2.1.1 e sto solo cercando di cancellare un indice usando
es.delete(index='researchtest', doc_type='test')
ma questo mi dà
return func(*args, params=params, **kwargs)
TypeError: delete() takes at least 4 arguments (4 given)
Ho anche provato
es.delete_by_query(index='researchtest', doc_type='test',body='{"query":{"match_all":{}}}')
ma capisco
AttributeError: 'Elasticsearch' object has no attribute 'delete_by_query'
Qualche idea del perché? L'API è cambiato per 2.1.1 per python?
Dai documenti, usa questa notazione:
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.delete(index='test-index', ignore=[400, 404])
Se hai un oggetto documento (modello) e utilizzi elasticsearch-dsl, specialmente con Python-3.X puoi chiamare direttamente il metodo delete
dell'attributo _index
del tuo modello.
ClassName._index.delete()
Anche come è dichiarato nella documentazione :
L'attributo
_index
ospita anche il metodo load_mappings che aggiornerà la mappatura dell'indice da elasticsearch. Ciò è molto utile se si utilizzano i mapping dinamici e si desidera che la classe sia consapevole di tali campi (ad esempio se si desidera che i campi Data siano correttamente (de) serializzati):Post._index.load_mappings()