web-dev-qa-db-ja.com

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'

理由は何ですか? Pythonの2.1.1のAPIは変更されましたか?

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

48
AbtPst

ドキュメントから、この表記法を使用します。

from elasticsearch import Elasticsearch
es = Elasticsearch()

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

ドキュメントオブジェクト(モデル)があり、elasticsearch-dslを使用している場合、特にPython-3.Xを使用すると、モデルの_index属性のdeleteメソッドを直接呼び出すことができます。

ClassName._index.delete()

また、 ドキュメントに記載

_index属性は、elasticsearchからのインデックスのマッピングを更新するload_mappingsメソッドのホームでもあります。これは、動的マッピングを使用し、クラスにこれらのフィールドを認識させる場合(たとえば、Dateフィールドを適切に(デ)シリアル化する場合)、非常に便利です。

Post._index.load_mappings()
2
Kasrâmvd