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

API восстановления индекса

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

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

Возвращает информацию о текущих и завершенных восстановлениях фрагментов для одного или нескольких индексов. Для потоков данных API возвращает информацию для базовых индексов потока.

resp = client.indices.recovery(
    index="my-index-000001",
)
print(resp)
response = client.indices.recovery(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.recovery({
  index: "my-index-000001",
});
console.log(response);
GET /my-index-000001/_recovery

Запрос

GET /<target>/_recovery

GET /_recovery

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

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

Описание

Используйте API восстановления индекса, чтобы получить информацию о текущих и завершенных восстановлениях фрагментов.

Восстановление фрагментов — это процесс инициализации копии фрагмента, например, восстановление первичного фрагмента из снимка или создание фрагмента-реплики из первичного фрагмента. После завершения восстановления фрагмента восстановленный фрагмент доступен для поиска и индексирования.

Восстановление автоматически происходит во время следующих процессов:

  • При первом создании индекса.
  • Когда узел присоединяется к кластеру и запускает любые отсутствующие копии первичных фрагментов, используя данные, которые он хранит в своем пути к данным.
  • Создание новых копий фрагментов-реплик из первичного фрагмента.
  • Перемещение копии фрагмента на другой узел в том же кластере.
  • Операция восстановления снимка.
  • Операции клонирования, сжатия или разделения индекса.

Вы можете определить причину восстановления фрагмента, используя API восстановления или cat recovery.

API восстановления индекса сообщает информацию о завершенных восстановлениях только для копий фрагментов, которые в настоящее время существуют в кластере. Он сообщает только о последнем восстановлении для каждой копии фрагмента и не сообщает информацию об исторических предыдущих восстановлениях, а также не сообщает информацию о восстановлениях копий фрагментов, которые больше не существуют. Это означает, что если копия фрагмента завершает восстановление, а затем Elasticsearch перемещает ее на другой узел, информация об исходном восстановлении не будет отображаться в API восстановления.

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

<target>
(Необязательно, строка) Список данных потоков, индексов и алиасов, разделенных запятыми, используемый для ограничения запроса. Поддерживаются подстановочные знаки (*). Чтобы нацелить все потоки данных и индексы, опустите этот параметр или используйте * или _all.

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

active_only
(Необязательно, логическое значение) Если true, ответ включает только текущие восстановления фрагментов. По умолчанию false.
detailed
(Необязательно, логическое значение) Если true, ответ включает подробную информацию о восстановлениях фрагментов. По умолчанию false.
index
(Необязательно, строка) Список, разделенный запятыми, или выражение с подстановкой для имен индексов, используемый для ограничения запроса.

Тело ответа

id
(Целое число) Идентификатор фрагмента.
type

(Строка) Источник восстановления для фрагмента. Возвращаемые значения включают:

EMPTY_STORE
Пустой магазин. Указывает на новый первичный фрагмент или принудительное распределение пустого первичного фрагмента с помощью API перенаправления кластера.
EXISTING_STORE
Магазин существующего первичного фрагмента. Указывает, что восстановление связано с запуском узла или распределением существующего первичного фрагмента.
LOCAL_SHARDS
Фрагменты другого индекса на том же узле. Указывает, что восстановление связано с операциями клонирования, сжатия или разделения.
PEER
Первичный фрагмент на другом узле. Указывает, что восстановление связано с репликацией фрагментов.
SNAPSHOT
Снимок. Указывает, что восстановление связано с операцией восстановления снимка.
STAGE

(Строка) Этап восстановления. Возвращаемые значения могут включать:

INIT
Восстановление не начато.
INDEX
Чтение метаданных индекса и копирование байтов из источника в пункт назначения.
VERIFY_INDEX
Проверка целостности индекса.
TRANSLOG
Переигрывание журнала транзакций.
FINALIZE
Очистка.
DONE
Завершено.
primary
(Логическое значение) Если true, фрагмент — первичный фрагмент.
start_time
(Строка) Отметка времени начала восстановления.
stop_time
(Строка) Отметка времени завершения восстановления.
total_time_in_millis
(Строка) Общее время восстановления фрагмента в миллисекундах.
source

(Объект) Источник восстановления. Он может включать:

  • Описание репозитория, если восстановление происходит из снимка
  • Описание узла источника
target
(Объект) Узел назначения.
index
(Объект) Статистика физического восстановления индекса.
translog
(Объект) Статистика восстановления транзакционного журнала.
start
(Объект) Статистика времени открытия и запуска индекса.

Примеры

Получение информации о восстановлении для нескольких потоков данных и индексов

resp = client.indices.recovery(
    index="index1,index2",
    human=True,
)
print(resp)
response = client.indices.recovery(
  index: 'index1,index2',
  human: true
)
puts response
const response = await client.indices.recovery({
  index: "index1,index2",
  human: "true",
});
console.log(response);
GET index1,index2/_recovery?human

Получение информации о сегментах для всех потоков данных и индексов в кластере

resp = client.indices.recovery(
    human=True,
)
print(resp)
response = client.indices.recovery(
  human: true
)
puts response
const response = await client.indices.recovery({
  human: "true",
});
console.log(response);
GET /_recovery?human

API возвращает следующий ответ:

{
  "index1" : {
    "shards" : [ {
      "id" : 0,
      "type" : "SNAPSHOT",
      "stage" : "INDEX",
      "primary" : true,
      "start_time" : "2014-02-24T12:15:59.716",
      "start_time_in_millis": 1393244159716,
      "stop_time" : "0s",
      "stop_time_in_millis" : 0,
      "total_time" : "2.9m",
      "total_time_in_millis" : 175576,
      "source" : {
        "repository" : "my_repository",
        "snapshot" : "my_snapshot",
        "index" : "index1",
        "version" : "{version}",
        "restoreUUID": "PDh1ZAOaRbiGIVtCvZOMww"
      },
      "target" : {
        "id" : "ryqJ5lO5S4-lSFbGntkEkg",
        "host" : "my.fqdn",
        "transport_address" : "my.fqdn",
        "ip" : "10.0.1.7",
        "name" : "my_es_node"
      },
      "index" : {
        "size" : {
          "total" : "75.4mb",
          "total_in_bytes" : 79063092,
          "reused" : "0b",
          "reused_in_bytes" : 0,
          "recovered" : "65.7mb",
          "recovered_in_bytes" : 68891939,
          "recovered_from_snapshot" : "0b",
          "recovered_from_snapshot_in_bytes" : 0,
          "percent" : "87.1%"
        },
        "files" : {
          "total" : 73,
          "reused" : 0,
          "recovered" : 69,
          "percent" : "94.5%"
        },
        "total_time" : "0s",
        "total_time_in_millis" : 0,
        "source_throttle_time" : "0s",
        "source_throttle_time_in_millis" : 0,
        "target_throttle_time" : "0s",
        "target_throttle_time_in_millis" : 0
      },
      "translog" : {
        "recovered" : 0,
        "total" : 0,
        "percent" : "100.0%",
        "total_on_start" : 0,
        "total_time" : "0s",
        "total_time_in_millis" : 0
      },
      "verify_index" : {
        "check_index_time" : "0s",
        "check_index_time_in_millis" : 0,
        "total_time" : "0s",
        "total_time_in_millis" : 0
      }
    } ]
  }
}

Этот ответ содержит информацию об одном индексе, восстанавливающем один фрагмент. Источник восстановления — хранилище снимков, а целевой узел восстановления — my_es_node узел.

Ответ также включает количество и процент восстановленных файлов и байтов.

Получение подробной информации о восстановлении

Чтобы получить список физических файлов в процессе восстановления, задайте параметр запроса detailed со значением true.

resp = client.indices.recovery(
    human=True,
    detailed=True,
)
print(resp)
response = client.indices.recovery(
  human: true,
  detailed: true
)
puts response
const response = await client.indices.recovery({
  human: "true",
  detailed: "true",
});
console.log(response);
GET _recovery?human&detailed=true

API возвращает следующий ответ:

{
  "index1" : {
    "shards" : [ {
      "id" : 0,
      "type" : "EXISTING_STORE",
      "stage" : "DONE",
      "primary" : true,
      "start_time" : "2014-02-24T12:38:06.349",
      "start_time_in_millis" : "1393245486349",
      "stop_time" : "2014-02-24T12:38:08.464",
      "stop_time_in_millis" : "1393245488464",
      "total_time" : "2.1s",
      "total_time_in_millis" : 2115,
      "source" : {
        "id" : "RGMdRc-yQWWKIBM4DGvwqQ",
        "host" : "my.fqdn",
        "transport_address" : "my.fqdn",
        "ip" : "10.0.1.7",
        "name" : "my_es_node"
      },
      "target" : {
        "id" : "RGMdRc-yQWWKIBM4DGvwqQ",
        "host" : "my.fqdn",
        "transport_address" : "my.fqdn",
        "ip" : "10.0.1.7",
        "name" : "my_es_node"
      },
      "index" : {
        "size" : {
          "total" : "24.7mb",
          "total_in_bytes" : 26001617,
          "reused" : "24.7mb",
          "reused_in_bytes" : 26001617,
          "recovered" : "0b",
          "recovered_in_bytes" : 0,
          "recovered_from_snapshot" : "0b",
          "recovered_from_snapshot_in_bytes" : 0,
          "percent" : "100.0%"
        },
        "files" : {
          "total" : 26,
          "reused" : 26,
          "recovered" : 0,
          "percent" : "100.0%",
          "details" : [ {
            "name" : "segments.gen",
            "length" : 20,
            "recovered" : 20
          }, {
            "name" : "_0.cfs",
            "length" : 135306,
            "recovered" : 135306,
            "recovered_from_snapshot": 0
          }, {
            "name" : "segments_2",
            "length" : 251,
            "recovered" : 251,
            "recovered_from_snapshot": 0
          }
          ]
        },
        "total_time" : "2ms",
        "total_time_in_millis" : 2,
        "source_throttle_time" : "0s",
        "source_throttle_time_in_millis" : 0,
        "target_throttle_time" : "0s",
        "target_throttle_time_in_millis" : 0
      },
      "translog" : {
        "recovered" : 71,
        "total" : 0,
        "percent" : "100.0%",
        "total_on_start" : 0,
        "total_time" : "2.0s",
        "total_time_in_millis" : 2025
      },
      "verify_index" : {
        "check_index_time" : 0,
        "check_index_time_in_millis" : 0,
        "total_time" : "88ms",
        "total_time_in_millis" : 88
      }
    } ]
  }
}

Ответ включает список восстановленных физических файлов и их размеры.

Ответ также содержит временные метки в миллисекундах различных этапов восстановления:

  • Извлечение индекса
  • Восстановление транслога
  • Время начала индекса

Этот ответ указывает, что восстановление done. Все восстановления, активные или завершенные, сохраняются в состоянии кластера и могут быть запрошены в любое время.

Чтобы получить только информацию об активных восстановлениях, задайте параметр запроса active_only со значением true.

© 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/indices-recovery.html

Spec-Zone.ru

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