请原谅我,如果这是非常基本但我有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'
知道为什么吗?对于python,api是否改为2.1.1?
答案 0 :(得分:72)
从文档中,使用此表示法:
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.delete(index='test-index', ignore=[400, 404])
答案 1 :(得分:0)
如果您有一个文档对象(模型),并且正在使用elasticsearch-dsl,尤其是在Python-3.X中,则可以直接调用模型的delete
属性的_index
方法。 / p>
ClassName._index.delete()
_index
属性也是load_mappings方法的宿主,该方法将通过elasticsearch更新Index上的映射。如果您使用动态映射并希望类知道这些字段(例如,如果您希望Date字段正确地(反)序列化),这将非常有用:Post._index.load_mappings()