Skip to Content

¿Qué es la arquitectura Elasticsearch?

Elasticsearch, que se lanzó en 2010, fue uno de los primeros motores de búsqueda distribuidos creados para consultas rápidas de datos que se muestran en análisis o en la salida de big data. En ese momento, más empresas estaban acumulando grandes cantidades de datos, pero los motores de bases de datos tradicionales no podían mantenerse al día. Elasticsearch se introdujo como una base de datos de vectores capaz de almacenar datos estructurados y no estructurados. Fue el primer gran salto hacia la indexación de big data y consultas más rápidas cuando el análisis empresarial superó los terabytes de datos, lo que causó problemas de rendimiento.

¿Qué es Elasticsearch?

Elasticsearch es un almacenamiento de datos que se usa para juntar datos y hacer que se puedan buscar a través de una API. Se basa en Apache Lucene, que es un servicio de indexación y almacenamiento que distribuye datos en fragmentos. Cada fragmento contiene sus propios datos, pero los fragmentos se mantienen separados entre sí para distribuir datos entre nodos. Elasticsearch agrupa todos los fragmentos y proporciona una API para que los desarrolladores consulten datos. Con la API, los administradores pueden establecer permisos para usuarios específicos para proteger aún más los datos y dar acceso a datos específicos solo a usuarios autorizados.

Los desarrolladores no se limitan a datos estructurados o no estructurados. Elasticsearch permite a los usuarios extraer datos estructurados y no estructurados, pero consulta los datos en sus fragmentos distribuidos como si el almacenamiento fuera una base de datos grande. La forma en que Elasticsearch maneja los datos lo hace mucho más rápido que un motor de base de datos estándar, por lo que es mejor para aplicaciones con análisis, funcionalidad de búsqueda en muchos datos o análisis de tráfico de red.

Componentes principales de la arquitectura Elasticsearch

El primer componente central de Elasticsearch es el nodo. Un nodo es un servidor o dispositivo en el que se almacenan datos. Los clústeres están compuestos por un conjunto de nodos. Los nodos y clústeres se pueden distribuir entre centros de datos para redundancia, pero los datos distribuidos son lo que mejora el rendimiento en las consultas de datos. Elasticsearch es una base de datos de vectores, pero almacena datos como documento. Un documento es una entidad que almacena datos no estructurados, aunque los datos estructurados también pueden almacenarse en él.

Los datos se dividen entre nodos. Los fragmentos son una porción de datos para segmentar grandes almacenes de datos en porciones más pequeñas, lo que facilita la distribución y la consulta simultánea para reunir datos en un conjunto de resultados para la aplicación frontend. Logstash se utiliza como proceso de datos, que toma los datos en su forma sin procesar y los transforma en una forma utilizable. 

Elasticsearch también tiene una API que es la puerta de entrada a los datos. Los desarrolladores deben autenticarse en la API y consultarla con una clave. La API controla el acceso a los datos y la forma en que los desarrolladores pueden consultarlos. Tener una API también oculta la arquitectura backend y la protege, lo que la hace accesible para los desarrolladores que no están familiarizados con la forma en que funcionan Apache Lucene y otros componentes.

Nodos y clústeres

Un clúster es un grupo de nodos, pero los nodos tienen su propio rol específico en un clúster. El nodo maestro, en términos generales, controla el clúster. El nodo maestro puede crear o eliminar índices y realizar un seguimiento de otros nodos que participan en el clúster. Cada clúster tiene un nodo maestro.

Un nodo de datos almacena los datos. Cualquier manipulación o cambio en los datos es responsabilidad del nodo de datos. A medida que agrega datos, se agrega al nodo de datos. La funcionalidad de búsqueda también se produce en el nodo de datos.

Piense en coordinar nodos como las puertas de enlace que controlan el tráfico hacia el nodo correcto. Un nodo de coordinación envía solicitudes al nodo maestro o a los nodos de datos, según su destino. Por ejemplo, cuando se envía una búsqueda al clúster, el nodo coordinador administra su solicitud.

Elasticsearch tiene un proceso para transformar y mover datos. El nodo de incorporación es responsable de administrar los documentos y transformarlos para la indexación. Elasticsearch recomienda tener un nodo de incorporación independiente de los nodos maestro y de datos en entornos con transferencias de datos pesadas.

Los nodos elegibles a distancia envían solicitudes a otros clústeres en el sistema Elasticsearch. Las consultas de búsqueda pueden encontrar datos mediante la funcionalidad de grupos cruzados con un nodo elegible remoto. La replicación de datos entre clústeres también es responsabilidad de los nodos elegibles para la función remota.

fragmentos y réplicas

Las búsquedas y consultas rápidas requieren índices. Los índices son la forma en que el almacenamiento de datos organiza los datos de una manera que hace que las búsquedas sean más rápidas. En Elasticsearch, cada índice está compuesto por varios fragmentos. Los fragmentos se almacenan en nodos donde Elasticsearch los distribuye en el clúster para un procesamiento más rápido. Los fragmentos contienen una copia de datos, pero Elasticsearch puede realizar búsquedas simultáneas en varios fragmentos.

La redundancia es necesaria para la conmutación por error y la tolerancia a fallas, por lo que las réplicas manejan una copia de fragmentos. Las réplicas se almacenan en diferentes nodos para que los datos no se pierdan cuando un nodo falla. Si un nodo falla, Elasticsearch podrá acceder a los datos en una réplica en un nodo diferente.

Flujo de datos en Elasticsearch

Elasticsearch proporciona una API para que los desarrolladores envíen sus consultas. La API protege a los desarrolladores de la complejidad del backend. El backend, como se analizó, está compuesto por varios componentes, incluidos fragmentos, nodos, índices y réplicas. En lugar de obligar a los desarrolladores a administrar los investigadores de Elasticsearch, el flujo de datos comienza con una consulta a la API.

La API envía la consulta primero a un coordinador. El coordinador lo envía al nodo adecuado donde se encuentran los fragmentos. También se puede enviar una consulta a varios fragmentos, cada uno con su propio conjunto de datos. El coordinador realiza el enrutamiento, que determina los fragmentos correctos para la consulta.

Después de que los fragmentos recopilan los documentos, los índices de los documentos se devuelven al coordinador. Cuando varios fragmentos devuelven datos al coordinador, el coordinador organizará los índices, los combinará y los ordenará. Con los índices ordenados, el coordinador recupera los documentos reales de los fragmentos. Una vez que se recuperan los datos, se envían de vuelta a la aplicación a través de la API.

Mejores prácticas para optimizar la arquitectura de Elasticsearch

Elasticsearch es mucho más complejo que el motor de base de datos promedio, por lo que la optimización requiere un enfoque diferente. Primero debe asegurarse de que se ejecuten suficientes recursos en el backend. Si las consultas son demasiado lentas, considere aumentar la capacidad de almacenamiento de CPU, memoria o servidor.

Los índices son necesarios para buscar datos, pero algunos datos no se utilizan con tanta frecuencia como otros datos. Elasticsearch le permite congelar índices, lo que mueve los índices no utilizados a otro fragmento. Los coordinadores tienen menos fragmentos para buscar cada consulta, lo que mejora el rendimiento.

Grupos de subprocesos en los tamaños de consulta de control de Elasticsearch y deben optimizarse para admitir la cantidad de datos manejados en cada consulta. Configure grupos de subprocesos para manejar suficientes datos para sus consultas, pero también se vinculan con recursos de nodos. Tanto los nodos como los grupos de subprocesos deben tener suficientes recursos, o podría ver un rendimiento degradado durante las consultas de alto volumen.

Conclusiones

Elasticsearch es mucho más complejo que una base de datos estándar, por lo que es necesario contar con la arquitectura y los recursos informáticos adecuados para un rendimiento óptimo. Use las mejores prácticas cuando configure Elasticsearch, pero también es importante contar con los recursos informáticos adecuados para respaldar las consultas y el almacenamiento de datos necesarios para el backend.

Una forma de asegurarse de tener suficientes recursos de almacenamiento es aprovechar Pure Storage® FlashBlade®. FlashBlade respalda el crecimiento exponencial para empresas pequeñas a grandes. Sus aplicaciones pueden escalar a medida que más usuarios almacenan datos y admiten cualquier cantidad de clientes.

03/2025
A Buyer’s Guide to Cyber Resilience
Cyber resilience from Pure Storage® is an integrated solution designed to safeguard critical data, proactively detect threats, and deliver near-instant recovery.
Guía del comprador
12 pages
CONTÁCTENOS
¿Preguntas, comentarios?

¿Tiene alguna pregunta o comentario sobre los productos o las certificaciones de Pure?  Estamos aquí para ayudar.

Programe una demostración

Programe una demostración en vivo y compruebe usted mismo cómo Pure puede ayudarlo a transformar sus datos en potentes resultados. 

Llámenos: 800-976-6494

Medios de comunicación: pr@purestorage.com

 

Pure Storage, Inc.

2555 Augustine Dr.

Santa Clara, CA 95054

800-379-7873 (información general)

info@purestorage.com

CERRAR
¡Su navegador ya no es compatible!

Los navegadores más antiguos a menudo representan riesgos de seguridad. Para brindar la mejor experiencia posible al utilizar nuestro sitio, actualice a cualquiera de estos navegadores más recientes.