Как получить список всех индексов в python-elasticsearch
Как мне получить список имен индекса в 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?
Ответы
Ответ 1
Этот вопрос возникает при поиске информации об извлечении aliases
с использованием библиотеки python-elasticsearch
. В принятом ответе используется get_aliases
, но этот метод был удален (с 2017 года). Чтобы получить aliases
, вы можете использовать следующее:
es.indices.get_alias("*")
Ответ 2
как получить список всех индексов в этом кластере?
Используйте шаблон. Работает с elasticsearch-py.
for index in es.indices.get('*'):
print index
Ответ 3
Вот один из способов сделать это с помощью get_alias()
:
>>> indices=es.indices.get_alias().keys()
>>> sorted(indices)
[u'avails', u'hey', u'kibana-int']
Ответ 4
Я использую curl для вызова API статистики и получения информации об индексах. Затем я разбираю объект JSON, который возвращается, чтобы найти имена индексов.
curl localhost:9200/_stats
В Python вы можете вызвать curl, используя библиотеку запросов. Я не знаю, как это сделать, используя библиотеку Elasticsearch или Elasticsearch-DSL Python.
Ответ 5
Вы можете получить _mapping, чтобы получить список всех индексов, выполнив что-то подобное.
requests.get(full_elastic_url + "/_mapping")
Ответ 6
Если вы готовы использовать модуль 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"
Это связано с этим вопросом