Pythonでインデックスの名前のリストを取得するにはどうすればよいですか?ここに私がこれまでに持っているものがあります:
>>> es=e.es
>>> es
<Elasticsearch([{'Host': '14555f777d8097.us-east-1.aws.found.io', 'port': 9200}])>
>>> es.indices
<elasticsearch.client.indices.IndicesClient object at 0x10de86790>
# how to get a list of all indexes in this cluster?
この質問は、python-elasticsearch
ライブラリを使用してaliases
を取得するための情報を検索するときに発生します。受け入れられた答えはget_aliases
を使用するように言っていますが、その方法は削除されました(2017年現在)。 aliases
を取得するには、次を使用できます。
es.indices.get_alias("*")
このクラスター内のすべてのインデックスのリストを取得する方法は?
ワイルドカードを使用します。 elasticsearch-pyで動作します。
for index in es.indices.get('*'):
print index
get_alias()
メソッドでそれを行う1つの方法を次に示します。
>>> indices=es.indices.get_alias().keys()
>>> sorted(indices)
[u'avails', u'hey', u'kibana-int']
pyelasticsearchモジュール を使用する場合は、GET _mapping
コマンド。クラスターのスキーマを作成します。これにより、インデックスを表示し、各インデックスにドリルしてdoc_typesとそのフィールドなどを表示できます。例を次に示します。
import pyelasticsearch as pyes
es = pyes.ElasticSearch(["http://hostname0:9200", "http://hostname1:9200"]) ## don't accidentally type Elasticsearch, the class from the other two modules
schema = es.get_mapping() ## python dict with the map of the cluster
インデックスのリストのみを取得するには、
indices_full_list = schema.keys()
just_indices = [index for index in indices_full_list if not index.startswith(".")] ## remove the objects created by marvel, e.g. ".marvel-date"
これは この質問 に関連しています
Curlを使用して統計APIを呼び出し、インデックスに関する情報を取得します。次に、返されたJSONオブジェクトを解析して、インデックス名を見つけます。
curl localhost:9200/_stats
Pythonでは、リクエストライブラリを使用してcurlを呼び出すことができます。 ElasticsearchまたはElasticsearch-DSL Pythonライブラリを使用してこれを行う方法がわかりません。
そのようなことを行うことで、_mappingを取得してすべてのインデックスのリストを取得できます。
requests.get(full_elastic_url + "/_mapping")