Подтвердить что ты не робот

Elasticsearch: удаление индекса с помощью python

Простите меня, если это довольно просто, но у меня есть Python 2.7 и Elasticsearch 2.1.1, и я просто пытаюсь удалить индекс, используя

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

но это дает мне

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

Я также пробовал

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

но я получаю

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

Любая идея, почему? Изменен ли api для 2.1.1 для python?

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

4b9b3361

Ответ 1

В документах используйте следующие обозначения:

from elasticsearch import Elasticsearch
es = Elasticsearch()

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

Ответ 2

Если у вас есть объект документа (модель), и вы используете elasticsearch-dsl, особенно с Python-3.X, вы можете напрямую вызвать метод delete вашего атрибута _index модели.

ClassName._index.delete()

Также, как указано в документации:

_index также является домом для метода load_mappings, который обновит отображение индекса из elasticsearch. Это очень полезно, если вы используете динамические сопоставления и хотите, чтобы класс знал об этих полях (например, если вы хотите, чтобы поля даты были правильно (де) сериализованы):

Post._index.load_mappings()