Как получить список закрытых индексов в 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. Надеюсь, это поможет вам.
Если единственный вопрос для вас здесь-просто посмотреть, какой индекс закрыт, то есть административная задача, которую вы можете использовать, например, elasticsearh head plugin:
http://yourserver:9200/_plugin/head/
Не забудьте последний Слэш. Если вы не можете установить его (например, на каком-либо размещенном ElasticSearch), или не можете использовать его по другой причине, или хотите программно управлять индексами, вы можете использовать другие советы здесь, чтобы узнать это с помощью API.
P. S.: И /_cluster/государственной/метаданные действительно может быть очень-очень долго, например, если вы используете динамическое сопоставление.
добавление команды, которая печатает список закрытых индексов (и ничего больше), для которых я гуглил.
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()
);
}