Как получить список всех индексов в 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"

Это связано с этим вопросом