1

я могу получить все индексы ES в списке с помощью такого кода:Elasticsearch (куратор Elasticsearch) API Python. Получить словарь индексов ES и их размеры

from elasticsearch import Elasticsearch 
es = Elasticsearch() 

indices=es.indices.get_aliases().keys() 
sorted(indices) 

Но есть возможность получить словарь как {'index1': '100gb', 'index2': '10gb', 'index3': '15gb'}. Поэтому я имею в виду dic с именем индекса и их размером.

+0

Какую версию API вы используете? Куратор 4 делает это как часть инициализации IndexList. – untergeek

+0

Причина, по которой я спрашиваю, заключается в том, что вы вообще не используете Куратор, даже если в заголовке и в теге вы указываете Elasticsearch куратор. Ниже приведен ответ, но он не использует куратор. Является ли ошибка куратора ошибкой? – untergeek

+0

@untergeek Тогда я был готов использовать привязку curstor-python в качестве опции. Но выглядит, что он не может показать мне информацию об индексах. – ipeacocks

ответ

2

Мой вариант:

import elasticsearch 

client = elasticsearch.Elasticsearch() 
all_indices = client.indices.stats(metric='store', human=True)['indices'].keys() 
dic_indices = {} 

for index in all_indices: 
    size = client.indices.stats(metric='store', human=True)['indices'][index]['total']['store']['size'] 
    dic_indices[index] = size 

print dic_indices 

Результат имеет следующий вид:

{u'haproxy-2016.09.02': u'1.6gb', u'haproxy-2016.09.03': u'827.3mb', u'marathon-2016.09.03': u'296.1mb', u'docker-2016-09-06': u'187.2mb', u'haproxy-2016.09.06': u'339.7mb', u'haproxy-2016.09.04': u'647.5mb', u'haproxy-2016.09.05': u'595.5mb'} 
2

Куратор 4 тянет большую часть метаданных индекса при инициализации IndexList. Это в байтах, а не в человеческих читаемых размерах, если это имеет значение.

Он находится в IndexList.index_info [index_name] [ ''] SIZE_IN_BYTES

Подробнее о методе IndexList в http://curator.readthedocs.io/en/latest/objectclasses.html#indexlist

import elasticsearch 
import curator 
client = elasticsearch.Elasticsearch(host='127.0.0.1') 

il = curator.IndexList(client) 
print('{0}'.format(il.indices)) 
[u'topbeat-2016.09.01', ...] 

print('{0}'.format(il.index_info['topbeat-2016.09.01']) 
{'number_of_replicas': u'1', 'size_in_bytes': 706503044, 'number_of_shards': u'5', 'docs': 1629986, 'age': {'creation_date': 1472688002}, 'state': u'open', 'segments': 0}