Cómo dimensionar shards de Elasticsearch en AWS

Clase 41 de 52Curso de Big Data en AWS

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.