Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST API ›Index API

API синхронизированной очистки

Устарело в версии 7.6.

Синхронизированная очистка устарела и будет удалена в версии 8.0. Используйте flush вместо неё. Очистка имеет тот же эффект, что и синхронизированная очистка в Elasticsearch 7.6 или более поздних версиях.

Выполняет синхронизированную очистку одного или нескольких индексов.

POST /my-index-000001/_flush/synced

Запрос

POST /<index>/_flush/synced

GET /<index>/_flush/synced

POST /_flush/synced

GET /_flush/synced

Описание

Использование API синхронизированной очистки

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

Вы можете запросить синхронизированную очистку даже при активной индексации, и Elasticsearch выполнит синхронизированную очистку на основе «лучшего усилия»: фрагменты, которые не имеют активной индексации, будут успешно очищены, а другие фрагменты не смогут выполнить синхронизированную очистку. Успешно очищенные фрагменты будут иметь более быстрые времена восстановления, пока маркер sync_id не будет удален последующей очисткой.

Обзор синхронизированной очистки

Elasticsearch отслеживает фрагменты, которые недавно получили индексацию, и считает фрагменты, не получавшие индексирования в течение 5 минут, неактивными.

Когда фрагмент становится неактивным, Elasticsearch выполняет специальную очистку, известную как синхронизированная очистка. Синхронизированная очистка выполняет обычную очистку для каждой реплики фрагмента, а затем добавляет маркер, известный как sync_id, к каждой реплике, чтобы указать, что эти копии имеют идентичные индексы Lucene. Сравнение маркеров sync_id двух копий является очень эффективным способом проверки их идентичности.

При распределении реплик фрагмента Elasticsearch должен убедиться, что каждая реплика содержит те же данные, что и основной фрагмент. Если фрагменты синхронизированы, и реплика имеет sync_id с основным фрагментом, то Elasticsearch знает, что две копии идентичны. Это означает, что нет необходимости копировать какие-либо файлы сегментов с основного фрагмента на реплику, что экономит много времени во время восстановления и перезагрузки.

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

Проверка маркеров sync_id

Чтобы проверить, есть ли у фрагмента маркер sync_id, посмотрите на раздел commit статистики фрагмента, возвращаемой API статистики индексов:

GET /my-index-000001/_stats?filter_path=**.commit&level=shards 

filter_path используется для уменьшения объема ответа, но является необязательным

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

{
   "indices": {
      "my-index-000001": {
         "shards": {
            "0": [
               {
                 "commit" : {
                   "id" : "3M3zkw2GHMo2Y4h4/KFKCg==",
                   "generation" : 3,
                   "user_data" : {
                     "translog_uuid" : "hnOG3xFcTDeoI_kvvvOdNA",
                     "history_uuid" : "XP7KDJGiS1a2fHYiFL5TXQ",
                     "local_checkpoint" : "-1",
                     "translog_generation" : "2",
                     "max_seq_no" : "-1",
                     "sync_id" : "AVvFY-071siAOuFGEO9P", 
                     "max_unsafe_auto_id_timestamp" : "-1",
                     "min_retained_seq_no" : "0"
                   },
                   "num_docs" : 0
                 }
               }
            ]
         }
      }
   }
}

маркер sync id

Маркер sync_id удаляется сразу же, как только фрагмент очищается, и Elasticsearch может в любое время инициировать автоматическую очистку фрагмента, если в транслоге фрагмента есть неочищенные операции. На практике это означает, что любую операцию индексирования в индексе следует рассматривать как удаление маркеров sync_id.

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

<index>

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

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

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

allow_no_indices
(Необязательно, логическое значение) Если false, запрос возвращает ошибку, если какое-либо выражение с подстановкой, псевдоним индекса или _all значение нацелено только на отсутствующие или закрытые индексы. Это поведение применяется даже если запрос нацелен на другие открытые индексы. Например, запрос, нацеленный на foo*,bar*, возвращает ошибку, если индекс начинается с foo, но ни один индекс не начинается с bar.
expand_wildcards

(Необязательно, строка) Тип индекса, на который могут соответствовать шаблоны с подстановкой. Если запрос может нацеливаться на потоковые данные, этот аргумент определяет, соответствуют ли шаблоны с подстановкой скрытым потоковым данным. Поддерживает значения через запятую, такие как open,hidden. Допустимые значения:

all
Сопоставить любой поток данных или индекс, включая скрытые.
open
Сопоставить открытые, нескрытые индексы. Также сопоставляет любые нескрытые потоки данных.
closed
Сопоставить закрытые, нескрытые индексы. Также сопоставляет любые нескрытые потоки данных. Потоки данных не могут быть закрытыми.
hidden
Сопоставить скрытые потоки данных и скрытые индексы. Должно быть объединено с open, closed или обоими.
none
Шаблоны с подстановкой не принимаются.

По умолчанию open.

ignore_unavailable
(Необязательно, логическое значение) Если false, запрос возвращает ошибку, если он нацелен на отсутствующий или закрытый индекс. По умолчанию false.

Коды ответов

200
Все фрагменты успешно синхронизированы.
409
Реплика фрагмента не смогла выполнить синхронизированную очистку.

Примеры

Синхронизированная очистка определенного индекса

POST /kimchy/_flush/synced

Синхронизированная очистка нескольких индексов

POST /kimchy,elasticsearch/_flush/synced

Синхронизированная очистка всех индексов

POST /_flush/synced

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

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

{
   "_shards": {
      "total": 2,
      "successful": 2,
      "failed": 0
   },
   "my-index-000001": {
      "total": 2,
      "successful": 2,
      "failed": 0
   }
}

Следующий ответ показывает, что одна группа фрагментов не смогла выполнить очистку из-за ожидаемых операций:

{
   "_shards": {
      "total": 4,
      "successful": 2,
      "failed": 2
   },
   "my-index-000001": {
      "total": 4,
      "successful": 2,
      "failed": 2,
      "failures": [
         {
            "shard": 1,
            "reason": "[2] ongoing operations on primary"
         }
      ]
   }
}

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

{
   "_shards": {
      "total": 4,
      "successful": 1,
      "failed": 1
   },
   "my-index-000001": {
      "total": 4,
      "successful": 3,
      "failed": 1,
      "failures": [
         {
            "shard": 1,
            "reason": "unexpected error",
            "routing": {
               "state": "STARTED",
               "primary": false,
               "node": "SZNr2J_ORxKTLUCydGX4zA",
               "relocating_node": null,
               "shard": 1,
               "index": "my-index-000001"
            }
         }
      ]
   }
}

© 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/7.17/indices-synced-flush-api.html

Spec-Zone.ru

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