これは非常に基本的ですが、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は変更されましたか?
ドキュメントから、この表記法を使用します。
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.delete(index='test-index', ignore=[400, 404])
ドキュメントオブジェクト(モデル)があり、elasticsearch-dslを使用している場合、特にPython-3.Xを使用すると、モデルの_index
属性のdelete
メソッドを直接呼び出すことができます。
ClassName._index.delete()
また、 ドキュメントに記載 :
_index
属性は、elasticsearchからのインデックスのマッピングを更新するload_mappingsメソッドのホームでもあります。これは、動的マッピングを使用し、クラスにこれらのフィールドを認識させる場合(たとえば、Dateフィールドを適切に(デ)シリアル化する場合)、非常に便利です。Post._index.load_mappings()