La Gestión del Ciclo de Vida del Índice (ILM, por sus siglas en inglés) en Elasticsearch es una funcionalidad que permite definir políticas para gestionar los índices a lo largo de su ciclo de vida. Esto incluye la creación, la gestión, la optimización y la eliminación de índices de manera automatizada, lo que ayuda a mantener el rendimiento y la eficiencia del clúster.

Conceptos Clave

  1. Fases del Ciclo de Vida:

    • Hot (Caliente): Fase donde los datos son indexados y consultados frecuentemente.
    • Warm (Tibia): Fase donde los datos son menos frecuentemente consultados pero aún se necesitan.
    • Cold (Fría): Fase donde los datos son raramente consultados y se almacenan de manera más económica.
    • Delete (Eliminar): Fase donde los datos ya no son necesarios y se eliminan.
  2. Políticas de ILM: Conjunto de reglas que definen cómo y cuándo los índices deben moverse entre las diferentes fases del ciclo de vida.

  3. Acciones de ILM: Operaciones específicas que se ejecutan en cada fase, como la rotación de índices, la reducción del número de réplicas, la migración a almacenamiento más económico, etc.

Creación de una Política de ILM

Paso 1: Definir la Política

Para crear una política de ILM, primero se define un conjunto de fases y acciones. A continuación, se muestra un ejemplo de una política de ILM en formato JSON:

{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "30d"
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "allocate": {
            "number_of_replicas": 1
          },
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "cold": {
        "min_age": "90d",
        "actions": {
          "allocate": {
            "require": {
              "box_type": "cold"
            }
          }
        }
      },
      "delete": {
        "min_age": "180d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

Paso 2: Aplicar la Política a un Índice

Una vez definida la política, se puede aplicar a un índice o a un patrón de índices. Esto se hace mediante la API de Elasticsearch:

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "30d"
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "allocate": {
            "number_of_replicas": 1
          },
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "cold": {
        "min_age": "90d",
        "actions": {
          "allocate": {
            "require": {
              "box_type": "cold"
            }
          }
        }
      },
      "delete": {
        "min_age": "180d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

Paso 3: Asociar la Política a un Índice

Para asociar la política a un índice, se utiliza la API de gestión de índices:

PUT my_index/_settings
{
  "index.lifecycle.name": "my_policy"
}

Ejercicio Práctico

Ejercicio 1: Crear y Aplicar una Política de ILM

  1. Definir una política de ILM que mueva los índices a la fase "warm" después de 7 días y los elimine después de 30 días.
  2. Aplicar la política a un índice llamado logs-2023.

Solución

  1. Definir la política de ILM:
PUT _ilm/policy/logs_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "7d"
          }
        }
      },
      "warm": {
        "min_age": "7d",
        "actions": {
          "allocate": {
            "number_of_replicas": 1
          },
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
  1. Aplicar la política al índice logs-2023:
PUT logs-2023/_settings
{
  "index.lifecycle.name": "logs_policy"
}

Resumen

En esta sección, hemos aprendido sobre la Gestión del Ciclo de Vida del Índice (ILM) en Elasticsearch, incluyendo los conceptos clave, cómo crear y aplicar políticas de ILM, y cómo asociar estas políticas a índices específicos. La ILM es una herramienta poderosa para automatizar la gestión de índices y mantener el rendimiento y la eficiencia del clúster.

En el siguiente módulo, exploraremos técnicas avanzadas para optimizar el rendimiento de búsqueda en Elasticsearch.

© Copyright 2024. Todos los derechos reservados