Как получить список закрытых индексов в ElasticSearch?

недавно я закрыл индекс через плагин Head в Elasticsearch. Я его не удалял.

Я хочу снова открыть его, но не дай бог я забуду, какой индекс я закрыл.

Как получить список всех индексов, которые я закрыл?

пробовал:

curl -s localhost:9200/_stats  | grep logstash-2013.12.05
curl -s localhost:9200/_status | grep logstash-2013.12.05

но не повезло.

8 ответов


при запросе: / _cluster / state / metadata

вы получаете список индексов, из каждого индекса вы можете запросить состояние: метаданные.индексы["your_index"].государство

Я использую это в своем плагине, и это работает для меня: http://www.gridshore.nl/esgui/


вы можете использовать это:

http://yourserver:9200/_cluster/state/blocks?pretty

было бы неплохо, чтобы Elasticsearch поместил его на эту страницу: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-open-close.html


до сих пор нет никакого API для этого. Но вы можете написать сценарий, чтобы определить, какой индекс закрыт.

проверка API:

    curl -XGET http://localhost:9200/_cluster/health/logstash-2014.02.21?pretty

вот статус index

Открыл:
{
     "cluster_name" : "ABC",
     "status" : "green",
     "timed_out" : false,
     "number_of_nodes" : 1,
     "number_of_data_nodes" : 1,
     "active_primary_shards" : 1,
     "active_shards" : 1,
     "relocating_shards" : 0,
     "initializing_shards" : 0,
     "unassigned_shards" : 0
}
Работает:
{
    "cluster_name" : "ABC",
    "status" : "green",
    "timed_out" : false,
    "number_of_nodes" : 1,
    "number_of_data_nodes" : 1,
    "active_primary_shards" : 0,
    "active_shards" : 0,
    "relocating_shards" : 0,
    "initializing_shards" : 0,
    "unassigned_shards" : 0
}

из информации вы можете определить статус индекса по active_primary_shards. Надеюсь, это поможет вам.


начиная с Elasticsearch 5 Вы можете сортировать вывод каталога

GET /_cat/indices?v&s=status:asc

даст вам enter image description here


Если единственный вопрос для вас здесь-просто посмотреть, какой индекс закрыт, то есть административная задача, которую вы можете использовать, например, elasticsearh head plugin:

http://yourserver:9200/_plugin/head/

Не забудьте последний Слэш. Если вы не можете установить его (например, на каком-либо размещенном ElasticSearch), или не можете использовать его по другой причине, или хотите программно управлять индексами, вы можете использовать другие советы здесь, чтобы узнать это с помощью API.

P. S.: И /_cluster/государственной/метаданные действительно может быть очень-очень долго, например, если вы используете динамическое сопоставление.


используйте Curl GET _cat / indices, $2 покажет состояние вашего индекса.


добавление команды, которая печатает список закрытых индексов (и ничего больше), для которых я гуглил.

curl -s -XGET 'http://localhost:9200/_cat/indices?h=status,index' | awk ' == "close" {print }'
  • -s заставит замолчать завиток, поэтому он не показывает строку состояния
  • h=status,index парам говорит _cat команда для печати только двух столбцов
  • на awk фильтр будет печатать имена индексов, когда статус закрыть

Смотрите также: https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cat-indices.html


видимо новая версия _cat команда более мощная.. сортировка, фильтрация, что угодно. Смотрите: https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html


http://es_endpoints.com:9200/index-pattern-*/_settings?expand_wildcards=closed

получить ответ от IndicesOptions.java из исходного кода ES:

public static IndicesOptions fromParameters(Object wildcardsString, Object ignoreUnavailableString, Object allowNoIndicesString, IndicesOptions defaultSettings) {
    if (wildcardsString == null && ignoreUnavailableString == null && allowNoIndicesString == null) {
        return defaultSettings;
    }

    boolean expandWildcardsOpen = false;
    boolean expandWildcardsClosed = false;
    if (wildcardsString == null) {
        expandWildcardsOpen = defaultSettings.expandWildcardsOpen();
        expandWildcardsClosed = defaultSettings.expandWildcardsClosed();
    } else {
        String[] wildcards = nodeStringArrayValue(wildcardsString);
        for (String wildcard : wildcards) {
            if ("open".equals(wildcard)) {
                expandWildcardsOpen = true;
            } else if ("closed".equals(wildcard)) {
                expandWildcardsClosed = true;
            } else if ("none".equals(wildcard)) {
                expandWildcardsOpen = false;
                expandWildcardsClosed = false;
            } else if ("all".equals(wildcard)) {
                expandWildcardsOpen = true;
                expandWildcardsClosed = true;
            } else {
                throw new IllegalArgumentException("No valid expand wildcard value [" + wildcard + "]");
            }
        }
    }

    //note that allowAliasesToMultipleIndices is not exposed, always true (only for internal use)
    return fromOptions(
            nodeBooleanValue(ignoreUnavailableString, "ignore_unavailable", defaultSettings.ignoreUnavailable()),
            nodeBooleanValue(allowNoIndicesString, "allow_no_indices", defaultSettings.allowNoIndices()),
            expandWildcardsOpen,
            expandWildcardsClosed,
            defaultSettings.allowAliasesToMultipleIndices(),
            defaultSettings.forbidClosedIndices(),
            defaultSettings.ignoreAliases()
    );
}