Todos os produtos
Search
Central de documentação

Elasticsearch:Separar dados quentes e frios com ILM

Última atualização: Jul 10, 2026

Use o Index Lifecycle Management (ILM) para mover índices automaticamente pelas fases hot, warm, cold e delete em um cluster hot-warm e reduzir custos de armazenamento. Disponível no Elasticsearch 6.6.0 e versões posteriores.

Fase

Descrição

hot

Gerencia gravações em tempo real para dados de séries temporais. A API de rollover cria um novo índice quando o atual atinge uma contagem de documentos, tamanho ou idade especificados.

warm

O índice torna-se somente leitura e atende apenas a consultas.

cold

O índice não recebe mais atualizações e é consultado com pouca frequência. A velocidade da consulta pode diminuir.

delete

O índice é excluído permanentemente.

Aplique uma política de ILM a um índice de duas maneiras:

  • Aplique a política a um modelo de índice. A política abrange todos os índices sob o alias. O exemplo a seguir usa esse método.

  • Aplique a política a um único índice. A política afeta apenas o índice atual. Novos índices criados por rollover não são afetados.

O cenário hot-warm a seguir demonstra esse ciclo de vida:

  1. Grave dados em tempo real. Quando o índice atinge um limiar, o rollover cria um novo índice.

  2. Após o rollover, o índice antigo permanece na fase hot por 30 minutos e depois entra na fase warm.

  3. Após a conclusão do merge e do shrink, o índice entra na fase cold 1 hora após o rollover.

  4. Os dados movem-se para nós warm. O índice é excluído 2 horas após o rollover.

Procedimento

  1. Etapa 1: Criar um cluster hot-warm e verificar atributos

    Defina os atributos dos nós hot e warm durante a criação do cluster.

  2. Etapa 2: Configurar uma política de ILM

    Defina uma política de ILM e aplique-a aos índices sob um alias.

  3. Etapa 3: Verificar a distribuição de dados

    Verifique se os shards do índice na fase cold residem em nós warm.

  4. Etapa 4: Atualizar uma política de ILM

    Atualize uma política existente.

  5. Etapa 5: Alternar uma política de ILM

    Alterne entre diferentes políticas para um rollover.

Etapa 1: Criar um cluster hot-warm e verificar atributos

Um cluster hot-warm contém nós hot para gravações em tempo real e nós warm para dados históricos.

Tipo de nó

Requisitos de dados

Desempenho de leitura/gravação

Especificações

Requisitos de armazenamento

Nó hot (hot)

Dados recentes, como logs dos últimos 2 dias.

Alto

Alta (por exemplo, 32 núcleos, 64 GB).

Recomenda-se discos cloud SSD.

Nó warm (warm)

Dados históricos, como logs com mais de 2 dias.

Baixo

Baixa (por exemplo, 8 núcleos, 32 GB).

Recomenda-se Ultra disks. Use o OpenStore para armazenamento serverless de grandes conjuntos de dados cold.

No Alibaba Cloud Elasticsearch, os nós warm têm um valor box_type definido como warm (não cold), correspondendo à camada warm no Elasticsearch nativo.
  1. Ao criar um cluster do Alibaba Cloud Elasticsearch, ative os nós warm para criar um cluster hot-warm.

  2. Após a ativação dos nós warm, o sistema adiciona o parâmetro -Enode.attr.box_type aos argumentos de inicialização do nó:

    • Nós hot: -Enode.attr.box_type=hot

    • Nós warm: -Enode.attr.box_type=warm

    Os nós de dados são designados como nós hot somente após a ativação dos nós warm.
  3. Faça login no console Kibana do cluster. Consulte Conectar-se a um cluster Elasticsearch usando o Kibana.

  4. No painel de navegação à esquerda, clique em Dev Tools.

  5. No Console, execute o seguinte comando para verificar os atributos do nó.

    GET _cat/nodeattrs?v&h=host,attr,value

    Se a resposta listar nós hot e warm, o cluster suporta a arquitetura hot-warm.

Etapa 2: Configurar uma política de ILM

  1. No console Kibana, execute o seguinte comando para definir uma política de ILM.

    PUT /_ilm/policy/game-policy
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_size": "1GB",
                "max_age": "1d",
                "max_docs": 1000
              }
            }
          },
          "warm": {
            "min_age": "30m",
            "actions": {
              "forcemerge": {
                    "max_num_segments":1
                  },
              "shrink": {
                    "number_of_shards":1
                  }
            }
          },
          "cold": {
            "min_age": "1h",
            "actions": {
              "allocate": {
                "require": {
                  "box_type": "warm"
                }
              }
            }
          },
          "delete": {
            "min_age": "2h",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }

    Parâmetro

    Descrição

    hot

    Um rollover é acionado quando qualquer condição é atendida: o índice atinge 1 GB (max_size), excede um dia (max_age) ou contém 1.000 documentos (max_docs). O índice antigo aguarda 30 minutos antes de entrar na fase warm.

    warm

    O índice é reduzido para um shard e passa por force-merge para um segmento. Ele entra na fase cold 1 hora após o rollover.

    cold

    O índice move-se para um nó warm. Ele entra na fase delete 2 horas após o rollover.

    delete

    O índice é excluído.

    Não é possível alterar os nomes das políticas após a criação. Também é possível criar políticas no console Kibana, mas a interface limita as unidades de tempo a horas. Use a API para unidades mais granulares, como segundos.
  2. Crie um modelo de índice que direcione novos índices para nós hot.

    PUT _template/gamestabes_template
    {
      "index_patterns" : ["gamestabes-*"],
      "settings": {
        "index.number_of_shards": 5,
        "index.number_of_replicas": 1,
        "index.routing.allocation.require.box_type":"hot",
        "index.lifecycle.name": "game-policy",
        "index.lifecycle.rollover_alias": "gamestabes"
      }
    }

    Parâmetro

    Descrição

    index.routing.allocation.require.box_type

    Tipo de nó para alocação do índice.

    index.lifecycle.name

    Nome da política de ILM a ser aplicada.

    index.lifecycle.rollover_alias

    Alias usado para rollover.

  3. Crie o índice inicial com um número de sequência.

    PUT gamestabes-000001
    {
    "aliases": {
        "gamestabes":{
           "is_write_index": true
            }
          }
    }

    Também é possível criar um índice baseado em tempo com date math.

  4. Grave dados pelo alias. O índice sofre rollover quando atende às condições da política e a próxima verificação de ILM é executada.

    PUT gamestabes/_doc/1
    {
        "EU_Sales" : 3.58,
        "Genre" : "Platform",
        "Global_Sales" : 40.24,
        "JP_Sales" : 6.81,
        "Name" : "Super Mario Bros.",
        "Other_Sales" : 0.77,
        "Platform" : "NES",
        "Publisher" : "Nintendo",
        "Year_of_Release" : "1985",
        "na_Sales" : 29.08
    }
    Por padrão, o ILM verifica os índices que correspondem aos critérios da política a cada 10 minutos. Modifique o intervalo de verificação usando o parâmetro indices.lifecycle.poll_interval.
  5. (Opcional) Visualize o status do ciclo de vida do índice no Kibana.

    1. No painel de navegação à esquerda, clique em Management.

    2. Na seção Elasticsearch, clique em Index Management.

    3. Clique na lista suspensa Lifecycle phase e selecione uma fase do ciclo de vida para filtrar os índices.

    4. Clique no nome de um índice filtrado para visualizar sua configuração detalhada.

Etapa 3: Verificar a distribuição de dados

Depois que um índice entra na fase cold, verifique se seus shards residem em nós warm.

  1. No console Kibana, localize o índice que entrou na fase cold.

  2. Execute o seguinte comando para verificar a distribuição de shards. Substitua shrink-gamestabes-000012 pelo nome do seu índice.

    GET _cat/shards/shrink-gamestabes-000012

    Se o nó do shard tiver box_type definido como warm, o índice reside em um nó warm.

Etapa 4: Atualizar uma política de ILM

  1. Execute o seguinte comando para atualizar a game-policy. Este exemplo altera a duração da fase delete:

    PUT /_ilm/policy/game-policy
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_size": "1GB",
                "max_age": "1d",
                "max_docs": 1000
              }
            }
          },
          "warm": {
            "min_age": "30m",
            "actions": {
              "forcemerge": {
                    "max_num_segments":1
                  },
              "shrink": {
                    "number_of_shards":1
                  }
            }
          },
          "cold": {
            "min_age": "1h",
            "actions": {
              "allocate": {
                "require": {
                  "box_type": "warm"
                }
              }
            }
          },
          "delete": {
            "min_age": "3h",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
  2. Visualize a versão atualizada da política.

    1. No painel de navegação à esquerda, clique em Management.

    2. Na seção Elasticsearch, clique em Index Lifecycle Policies.

    3. Verifique o número da versão da política. Ele incrementa a cada atualização. Os índices ativos mantêm a versão antiga até o próximo rollover.

Etapa 5: Alternar uma política de ILM

  1. Crie uma nova política.

    PUT /_ilm/policy/game-new
    {
      "policy": {
        "phases": {
          "hot": {
            "actions": {
              "rollover": {
                "max_size": "3GB",
                "max_age": "1d",
                "max_docs": 1000
              }
            }
          },
          "warm": {
            "min_age": "30m",
            "actions": {
              "forcemerge": {
                    "max_num_segments":1
                  },
              "shrink": {
                    "number_of_shards":1
                  }
            }
          },
          "cold": {
            "min_age": "1h",
            "actions": {
              "allocate": {
                "require": {
                  "box_type": "warm"
                }
              }
            }
          },
          "delete": {
            "min_age": "2h",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
  2. Aplique a nova política ao modelo.

    PUT _template/gamestabes_template
    {
      "index_patterns" : ["gamestabes-*"],
      "settings": {
        "index.number_of_shards": 5,
        "index.number_of_replicas": 1,
        "index.routing.allocation.require.box_type":"hot",
        "index.lifecycle.name": "game-new",
        "index.lifecycle.rollover_alias": "gamestabes"
      }
    }

Perguntas frequentes

Como ajusto o intervalo de verificação do ILM?

Por padrão, o ILM verifica os índices em relação à política a cada 10 minutos. Os dados podem exceder o limiar entre as verificações. Por exemplo, um índice pode conter mais de 1.000 documentos antes que o rollover seja acionado, mesmo que max_docs seja 1.000.

Ajuste a frequência de verificação com o parâmetro indices.lifecycle.poll_interval:

Importante

Um intervalo menor aumenta a carga do nó. Defina esse valor com base na sua carga de trabalho.

PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval":"1m"
  }
}