Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Управление данными ›Действия жизненного цикла индексов

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

Разрешенные фазы: hot, warm.

Принудительно сливает индекс в указанное максимальное число сегментов.

Фрагменты, которые перемещаются во время forcemerge, не будут сливаться.

Для использования действия forcemerge в фазе hot, действие rollover обязательно должно присутствовать. Если действие переключения не настроено, ILM отклонит политику.

Рекомендации по производительности

Принудительное слияние — это ресурсоемкая операция. Если слишком много принудительных слияний инициируется одновременно, это может негативно сказаться на вашем кластере. Это может произойти, когда вы применяете политику ILM, которая включает действие принудительного слияния к существующим индексам. Если они соответствуют критериям min_age, они могут сразу перейти через несколько фаз. Вы можете предотвратить это, увеличив min_age или установив index.lifecycle.origination_date, чтобы изменить способ расчета возраста индекса.

Если у вас наблюдается задержка в очереди задач принудительного слияния, возможно, потребуется увеличить размер пула потоков для принудительного слияния, чтобы индексы можно было сливать параллельно. Для этого настройте thread_pool.force_merge.size настройку кластера.

Это может иметь каскадные последствия для производительности. Отслеживайте производительность кластера и медленно увеличивайте размер пула потоков, чтобы уменьшить задержку.

Принудительное слияние будет выполняться узлами в рамках текущей фазы индекса. Принудительное слияние в фазе hot будет использовать узлы типа hot с потенциально более быстрыми узлами, но при этом будет оказывать большее влияние на обработку данных. Принудительное слияние в фазе warm будет использовать узлы типа warm и, потенциально, займёт больше времени, но не повлияет на обработку данных в уровне hot.

Параметры

max_num_segments
(Обязательно, целое число) Количество сегментов для слияния. Чтобы полностью слить индекс, установите значение 1.
index_codec

(Необязательно, строка) Кодек, используемый для сжатия хранилища документов. Единственное допустимое значение — best_compression, который использует ZSTD для повышения коэффициента сжатия, но с более низкой производительностью хранимых полей. Чтобы использовать кодек LZ4 по умолчанию, опустите этот аргумент.

Если использовать best_compression, ILM закроет, а затем перезапустит индекс перед принудительным слиянием. Пока индекс закрыт, он будет недоступен для чтения или записи.

Пример

resp = client.ilm.put_lifecycle(
    name="my_policy",
    policy={
        "phases": {
            "warm": {
                "actions": {
                    "forcemerge": {
                        "max_num_segments": 1
                    }
                }
            }
        }
    },
)
print(resp)
response = client.ilm.put_lifecycle(
  policy: 'my_policy',
  body: {
    policy: {
      phases: {
        warm: {
          actions: {
            forcemerge: {
              max_num_segments: 1
            }
          }
        }
      }
    }
  }
)
puts response
const response = await client.ilm.putLifecycle({
  name: "my_policy",
  policy: {
    phases: {
      warm: {
        actions: {
          forcemerge: {
            max_num_segments: 1,
          },
        },
      },
    },
  },
});
console.log(response);
PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "forcemerge" : {
            "max_num_segments": 1
          }
        }
      }
    }
  }
}

© 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/ilm-forcemerge.html

Spec-Zone.ru

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