Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›REST API ›API кластера

API состояния кластера

Новая справка по API

Для получения самых актуальных данных по API обратитесь к API кластера.

Возвращает состояние здоровья кластера.

Запрос

GET /_cluster/health/<target>

Предварительные условия

  • Если включены функции безопасности Elasticsearch, для использования этого API необходимо иметь привилегии кластера monitor или manage.

Описание

API состояния кластера возвращает краткое состояние здоровья кластера. Также с помощью API можно получить состояние здоровья только указанных потоков данных и индексов. Для потоков данных API получает состояние здоровья базовых индексов потока.

Состояние здоровья кластера: green, yellow или red. На уровне фрагментов red означает, что фрагмент не выделен в кластере, yellow означает, что первичный фрагмент выделен, но реплики нет, а green означает, что все фрагменты выделены. Состояние на уровне индекса контролируется худшим состоянием фрагмента. Состояние кластера контролируется худшим состоянием индекса.

Одно из основных преимуществ API — возможность ожидания, пока кластер достигнет определённого уровня здоровья. Например, следующий код подождёт 50 секунд, пока кластер достигнет уровня yellow (если кластер достигнет состояния green или yellow раньше, чем через 50 секунд, он вернёт результат в этот момент):

$response = $client->cluster()->health();
resp = client.cluster.health(
    wait_for_status="yellow",
    timeout="50s",
)
print(resp)
response = client.cluster.health(
  wait_for_status: 'yellow',
  timeout: '50s'
)
puts response
res, err := es.Cluster.Health(
	es.Cluster.Health.WithTimeout(time.Duration(50000000000)),
	es.Cluster.Health.WithWaitForStatus("yellow"),
)
fmt.Println(res, err)
const response = await client.cluster.health({
  wait_for_status: "yellow",
  timeout: "50s",
});
console.log(response);
GET /_cluster/health?wait_for_status=yellow&timeout=50s

Параметры пути

<target>

(Необязательно, строка) Список потоков данных, индексов и псевдонимов индексов, разделённых запятыми, используемых для ограничения запроса. Поддерживаются символы подстановки (*).

Для обработки всех потоков данных и индексов в кластере опустите этот параметр или используйте _all или *.

Параметры запроса

level
(Необязательно, строка) Может быть одним из cluster, indices или shards. Управляет уровнем детализации возвращаемой информации о состоянии здоровья. По умолчанию cluster.
local
(Необязательно, Булево) Если true, запрос получает информацию только с локального узла. По умолчанию false, что означает получение информации с узла-мастера.
master_timeout
(Необязательно, единицы времени) Период ожидания узла-мастера. Если узел-мастер недоступен до истечения времени ожидания, запрос завершается ошибкой. По умолчанию 30s. Также может быть установлено в -1, чтобы указать, что запрос никогда не должен зависать.
timeout
(Необязательно, единицы времени) Время ожидания ответа от всех соответствующих узлов в кластере после обновления метаданных кластера. Если ответ не получен до истечения времени ожидания, обновление метаданных кластера всё равно применяется, но ответ будет указывать, что оно не было полностью подтверждено. По умолчанию 30s. Также может быть установлено в -1, чтобы указать, что запрос никогда не должен зависать.
wait_for_active_shards
(Необязательно, строка) Число, определяющее количество активных фрагментов, которых нужно дождаться, all для ожидания всех фрагментов в кластере, или 0 для того, чтобы не ждать. По умолчанию 0.
wait_for_events
(Необязательно, строка) Может быть одним из immediate, urgent, high, normal, low, languid. Ожидание, пока все текущие очереди событий с заданным приоритетом обрабатываются.
wait_for_no_initializing_shards
(Необязательно, Булево) Булево значение, которое управляет ожиданием (до истечения установленного таймаута) отсутствия инициализации фрагментов в кластере. По умолчанию false, что означает, что ожидание инициализирующихся фрагментов не выполняется.
wait_for_no_relocating_shards
(Необязательно, Булево) Булево значение, которое управляет ожиданием (до истечения установленного таймаута) отсутствия перемещения фрагментов в кластере. По умолчанию false, что означает, что ожидание перемещающихся фрагментов не выполняется.
wait_for_nodes
(Необязательно, строка) Запрос ожидает, пока указанное число N узлов станет доступным. Также поддерживаются значения >=N, <=N, >N и <N. В качестве альтернативы можно использовать обозначение ge(N), le(N), gt(N) и lt(N).
wait_for_status
(Необязательно, строка) Одно из green, yellow или red. Ожидает (до истечения установленного таймаута), пока состояние кластера не изменится на указанное или лучшее, то есть green > yellow > red. По умолчанию ожидание состояния не выполняется.

Тело ответа

cluster_name
(строка) Имя кластера.
status

(строка) Состояние здоровья кластера, основанное на состоянии первичных и реплицированных фрагментов. Возможные состояния:

  • green: Все фрагменты назначены.
  • yellow: Все первичные фрагменты назначены, но один или несколько фрагментов реплики не назначены. При сбое узла в кластере некоторые данные могут быть недоступны до восстановления этого узла.
  • red: Один или несколько первичных фрагментов не назначены, поэтому некоторые данные недоступны. Это может произойти в течение короткого времени при запуске кластера, пока первичные фрагменты не назначены.
timed_out
(Булево) Если false, ответ возвращён в течение периода времени, указанного параметром timeout (по умолчанию 30s).
number_of_nodes
(целое число) Количество узлов в кластере.
number_of_data_nodes
(целое число) Количество узлов, являющихся узлами данных.
active_primary_shards
(целое число) Количество активных первичных фрагментов.
active_shards
(целое число) Общее количество активных первичных и реплицированных фрагментов.
relocating_shards
(целое число) Количество фрагментов, которые находятся в процессе перемещения.
initializing_shards
(целое число) Количество фрагментов, которые находятся в процессе инициализации.
unassigned_shards
(целое число) Количество фрагментов, которые не выделены.
unassigned_primary_shards
(целое число) Количество фрагментов, которые являются первичными, но не выделены.
Примечание
: Это число может быть меньше истинного значения, если ваш кластер содержит узлы, работающие на версии ниже 8.16. Для более точного подсчёта в этом сценарии используйте API состояния кластера.
delayed_unassigned_shards
(целое число) Количество фрагментов, чья выделение было отложено из-за настроек таймаута.
number_of_pending_tasks
(целое число) Количество изменений на уровне кластера, которые ещё не выполнены.
number_of_in_flight_fetch
(целое число) Количество не завершенных извлечений.
task_max_waiting_in_queue_millis
(целое число) Время в миллисекундах, прошедшее с момента ожидания выполнения самой ранней задачи.
active_shards_percent_as_number
(вещественное число) Процент активных фрагментов в кластере.

Примеры

$response = $client->cluster()->health();
resp = client.cluster.health()
print(resp)
response = client.cluster.health
puts response
res, err := es.Cluster.Health()
fmt.Println(res, err)
const response = await client.cluster.health();
console.log(response);
GET _cluster/health

API возвращает следующий ответ в случае тихого кластера из одного узла с одним индексом, одной фрагментом и одной репликой:

{
  "cluster_name" : "testcluster",
  "status" : "yellow",
  "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" : 1,
  "unassigned_primary_shards" : 0,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 50.0
}

Следующий пример получения состояния кластера на уровне shards:

resp = client.cluster.health(
    index="my-index-000001",
    level="shards",
)
print(resp)
response = client.cluster.health(
  index: 'my-index-000001',
  level: 'shards'
)
puts response
const response = await client.cluster.health({
  index: "my-index-000001",
  level: "shards",
});
console.log(response);
GET /_cluster/health/my-index-000001?level=shards

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/cluster-health.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API