Introducción

Elasticsearch es un motor de búsqueda y análisis distribuido, diseñado para manejar grandes volúmenes de datos en tiempo real. Su arquitectura está diseñada para ser escalable, flexible y eficiente. En esta sección, exploraremos los componentes clave de la arquitectura de Elasticsearch y cómo interactúan entre sí.

Componentes Clave

  1. Nodos

Un nodo es una instancia de Elasticsearch que almacena datos y participa en las operaciones de indexación y búsqueda. Los nodos pueden ser de diferentes tipos, cada uno con un rol específico:

  • Nodo Maestro (Master Node): Responsable de la gestión del clúster, como la creación/eliminación de índices y la gestión de la asignación de fragmentos.
  • Nodo de Datos (Data Node): Almacena los datos y realiza operaciones relacionadas con ellos, como búsquedas y agregaciones.
  • Nodo Coordinador (Coordinating Node): Maneja las solicitudes de búsqueda y distribución de estas a los nodos de datos, agregando los resultados.
  • Nodo de Ingesta (Ingest Node): Realiza preprocesamiento de documentos antes de que sean indexados.

  1. Clúster

Un clúster es un conjunto de uno o más nodos que trabajan juntos. Cada clúster tiene un nombre único que lo identifica. Los clústeres permiten la escalabilidad horizontal, ya que se pueden añadir más nodos para manejar mayores volúmenes de datos y cargas de trabajo.

  1. Índices

Un índice es una colección de documentos que comparten características similares. En Elasticsearch, los índices son la unidad principal de organización de datos. Cada índice tiene un nombre único y puede contener múltiples tipos de documentos.

  1. Fragmentos (Shards)

Los índices se dividen en fragmentos para distribuir la carga de trabajo y permitir la escalabilidad. Hay dos tipos de fragmentos:

  • Fragmentos Primarios (Primary Shards): Contienen los datos originales del índice.
  • Fragmentos Réplica (Replica Shards): Copias de los fragmentos primarios que proporcionan redundancia y alta disponibilidad.

  1. Documentos

Un documento es la unidad básica de información que se puede indexar. Cada documento es un objeto JSON que contiene datos estructurados. Los documentos se almacenan en índices y se identifican de manera única por un ID.

Diagrama de Arquitectura

A continuación, se presenta un diagrama simplificado de la arquitectura de Elasticsearch:

+-------------------+
|     Clúster       |
|                   |
| +---------------+ |
| |     Nodo 1    | |
| | (Master/Data) | |
| +---------------+ |
|                   |
| +---------------+ |
| |     Nodo 2    | |
| |    (Data)     | |
| +---------------+ |
|                   |
| +---------------+ |
| |     Nodo 3    | |
| | (Coordinating)| |
| +---------------+ |
+-------------------+

Ejemplo Práctico

Configuración de un Clúster

Supongamos que queremos configurar un clúster con tres nodos: un nodo maestro, un nodo de datos y un nodo coordinador. A continuación, se muestra cómo se podría configurar cada nodo en el archivo elasticsearch.yml:

Nodo Maestro

cluster.name: my-cluster
node.name: master-node
node.master: true
node.data: false
node.ingest: false
network.host: 0.0.0.0
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["master-node"]

Nodo de Datos

cluster.name: my-cluster
node.name: data-node
node.master: false
node.data: true
node.ingest: false
network.host: 0.0.0.0
discovery.seed_hosts: ["node1", "node2", "node3"]

Nodo Coordinador

cluster.name: my-cluster
node.name: coordinating-node
node.master: false
node.data: false
node.ingest: false
network.host: 0.0.0.0
discovery.seed_hosts: ["node1", "node2", "node3"]

Ejercicio Práctico

Ejercicio 1: Configuración de un Clúster Básico

Objetivo: Configurar un clúster de Elasticsearch con tres nodos: un nodo maestro, un nodo de datos y un nodo coordinador.

Instrucciones:

  1. Instala Elasticsearch en tres máquinas diferentes o en tres instancias de contenedores.
  2. Configura cada nodo según los ejemplos proporcionados anteriormente.
  3. Inicia cada nodo y verifica que el clúster se haya formado correctamente utilizando la API de clúster de Elasticsearch.

Solución:

  1. Instala Elasticsearch en cada máquina.
  2. Configura los archivos elasticsearch.yml en cada nodo según los ejemplos.
  3. Inicia Elasticsearch en cada nodo:
    ./bin/elasticsearch
    
  4. Verifica el estado del clúster:
    curl -X GET "localhost:9200/_cluster/health?pretty"
    

Conclusión

En esta sección, hemos explorado la arquitectura de Elasticsearch, incluyendo sus componentes clave como nodos, clústeres, índices, fragmentos y documentos. También hemos visto cómo configurar un clúster básico de Elasticsearch. Con esta comprensión, estarás mejor preparado para trabajar con Elasticsearch de manera efectiva y escalar tus aplicaciones según sea necesario. En el próximo módulo, comenzaremos a indexar y buscar datos en Elasticsearch.

© Copyright 2024. Todos los derechos reservados