Cómo dimensionar shards de Elasticsearch en AWS

Clase 41 de 52Curso de Big Data en AWS

Contenido del curso

Extracción de información

Transformación de Información

Resumen

Domina Elasticsearch en AWS con una guía clara y práctica. Aquí verás cómo funciona su motor de búsqueda, cómo desplegar un clúster con buenas prácticas de shards, y cómo integrar Kinesis Firehose, Lambda y Kibana para una visualización de logs eficiente y segura.

¿Qué es Elasticsearch y cómo se integra en AWS?

Elasticsearch es un servicio de búsqueda y análisis que potencia la visualización de información. Su corazón es Apache Lucene, lo que permite consultas rápidas y flexibles.

  • Motor de búsqueda basado en Apache Lucene.
  • Soporta data estructurada, JSON y data no estructurada.
  • Despliegue como clúster en AWS con nodo maestro para orquestar consultas.
  • Integración nativa con Logstash y Kibana para ingestión y dashboards.

¿Cómo asegurar y alimentar Elasticsearch en producción?

En producción, la prioridad es proteger el acceso, cifrar la información y definir una ruta de ingestión confiable. Estas piezas garantizan seguridad y continuidad operativa.

¿Cómo autenticar con Amazon Cognito?

  • Usa Amazon Cognito, que maneja users pools.
  • Opción 1: crear un grupo de usuarios con usuario/clave independientes de IAM.
  • Opción 2: integrar con correo corporativo.
  • Objetivo: mejorar la seguridad de acceso a la información.

¿Cómo cifrar la data con KMS?

  • Habilita cifrado de la data en tránsito usando KMS.
  • Si manejas data sensible, el cifrado en Elasticsearch debe estar siempre activo.

¿Cómo ingestar con Kinesis Firehose o Lambda?

  • Puedes alimentar Elasticsearch con Kinesis Firehose o con una función Lambda.
  • Con Kinesis Firehose solo alimentas un índice por flujo.
  • Para múltiples índices: usa múltiples Firehose o elige Lambda.
  • En varios casos, Lambda es preferible por su flexibilidad de transformación.

¿Qué conceptos, arquitectura y dimensionamiento debes dominar?

Comprender los conceptos internos y el diseño de la arquitectura evita cuellos de botella y costes innecesarios. La clave está en dominar índices, estructura y shards.

¿Qué es un índice y cómo se estructura la data?

  • El índice es un nombre lógico que agrupa la información que llega a Elasticsearch.
  • Ese índice distribuye la data en shards para almacenamiento y consulta.
  • Analogía con relacionales: motor de Elasticsearchíndice (base de datos) → tipos (tablas) → documentos (columnas y filas).
  • Entender esta equivalencia facilita el modelado y la consulta.

¿Qué son los shards y cómo dimensionarlos?

  • Un shard es la unidad que almacena y distribuye datos entre los nodos del clúster.
  • Estimar bien la cantidad de shards es vital para rendimiento y costos.
  • Ejemplo: clúster de 4 nodos con 5 shards genera desbalanceo; un nodo cargará 2 shards y puede causar problemas de rendimiento al redistribuir.
  • Recomendación de Amazon: usar instancias tipo I (optimizadas para storage).
  • Tamaño recomendado por shard: 50–150 GB en promedio.

¿Qué arquitecturas de ingestión y visualización se proponen?

  • Flujo con Firehose y transformación en el propio servicio:
    • App → Kinesis FirehoseS3 (logs fallidos) → Lambda (transformación) → ElasticsearchKibana (dashboards).
  • Flujo con transformación a partir de S3:
    • App → Kinesis FirehoseS3 → dispara LambdaElasticsearchKibana.
  • En ambos casos, Kibana permite crear dashboards para consultas sobre los logs.
  • En ambientes productivos, dimensiona el clúster: cantidad de nodos, storage y shards; AWS publica fórmulas para estimarlo.

¿Quieres profundizar en tu caso de uso con Kinesis, Lambda, shards o dashboards en Kibana? Cuéntame tu contexto y objetivos, y trabajamos una estrategia óptima.

      Cómo dimensionar shards de Elasticsearch en AWS