Elasticsearch:如何使用python删除索引


71

如果这是很基本的内容,请原谅我,但是我有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是否已针对python 2.1.1更改?

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

Answers:


126

在文档中,使用以下表示法:

from elasticsearch import Elasticsearch
es = Elasticsearch()

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

8

如果您有一个文档对象(模型),并且正在使用elasticsearch-dsl,特别是在Python-3.X中,则可以直接调用delete模型_index属性的方法。

ClassName._index.delete()

同样如文档中所述

_index属性也是lo​​ad_mappings方法的宿主,该方法将通过elasticsearch更新Index上的映射。如果您使用动态映射并希望类知道这些字段(例如,如果您希望Date字段正确地(反)序列化),这将非常有用:

Post._index.load_mappings()
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.