it-swarm-eu.dev

Elasticsearch: come eliminare un indice usando python

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? 

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

35
AbtPst

Dai documenti, usa questa notazione:

from elasticsearch import Elasticsearch
es = Elasticsearch()

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

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()
0
Kasrâmvd