Ответ 1
В документах используйте следующие обозначения:
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.delete(index='test-index', ignore=[400, 404])
Простите меня, если это довольно просто, но у меня есть 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?
В документах используйте следующие обозначения:
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.delete(index='test-index', ignore=[400, 404])
Если у вас есть объект документа (модель), и вы используете elasticsearch-dsl, особенно с Python-3.X, вы можете напрямую вызвать метод delete
вашего атрибута _index
модели.
ClassName._index.delete()
Также, как указано в документации:
_index
также является домом для метода load_mappings, который обновит отображение индекса из elasticsearch. Это очень полезно, если вы используете динамические сопоставления и хотите, чтобы класс знал об этих полях (например, если вы хотите, чтобы поля даты были правильно (де) сериализованы):Post._index.load_mappings()