2015-01-05 2 views
7

В настоящее время (версия 1.4.2) можно проверить existence of an index (хотя, возможно, и не идеально), и до close and open an index. Я не вижу способа проверить, открыт ли индекс или закрыт.Проверьте, открыт ли индекс поиска elasticsearch

Вызов status возвращает «IndexClosedException», которое больше всего встречается в случае обработки исключений, а не в информационном, которое я ищу.

Как вы это проверяете? Или есть другой способ сделать поиск без возможности прохождения уже закрытого индекса?

ответ

5

Используйте GET /_cat/indices/my_index?v, и вы получите что-то вроде этого: сзади

health status index  pri rep docs.count docs.deleted store.size pri.store.size 
yellow open my_index 5 1   2   0  5.3kb   5.3kb 

И вы можете увидеть status столбец.

+0

Не знал об этих API, кота. Гораздо приятнее для глаз человека. – tostasqb

+0

[Здесь] (http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_cat_api.html) хорошее резюме для cat api. –

3

Хотя _cat конечная точка хороша для людей, если вы хотите что-то более скрипт/программа дружественных вы можете сделать что-то вроде ...

Lookup для одного индекса:

curl -GET 'http://es-host:9200/_cluster/state' | jq '.metadata.indices["index_name"].state' 

Список всех индексов :

curl -GET 'http://es-host:9200/_cluster/state' | jq '.metadata.indices | to_entries | .[] | {index: .key, state: .value.state}' 
+0

Что означает «jq»? – tostasqb

+0

Понятия не имею, но это JSON, анализирующий удивительность: http://stedolan.github.io/jq/ –

+0

Это только то, что команда дает мне «jq: command not found» – tostasqb

2

наиболее емкий способ получить открыть/закрыть ответ для одного индекса заключается в использовании кошки индексов API для целевого показателя и ограничить возвращаемый столбец о олько включают status:

curl http://localhost:9200/_cat/indices/some_index?h=status 

Это должно возвращать либо open или close. Мы используем эту же стратегию для здоровья индекса (красный/желтый/зеленый).

2

Это ответ на вопрос this, который, я думаю, подходит ближе к ожидаемому.

Вы можете использовать кластерное состояние API вместо:

GET _cluster/state/metadata/my_index 

или даже:

GET _cluster/state/metadata/my_index?filter_path=metadata.indices.*.state 
Смежные вопросы