Elasticsearch es un motor de búsqueda y análisis gratuito y de código abierto basado en Apache Lucene. Elasticsearch es distribuido y admite todos los tipos de datos, incluidos los numéricos, textuales, estructurados, no estructurados y geoespaciales. Elasticsearch viene con API REST sencillas y ofrece funciones para escalabilidad y búsqueda rápida.
Elasticsearch es una parte importante de Elastic Stack, que es un conjunto de herramientas de código abierto que incluye la ingestión, el almacenamiento, el enriquecimiento, la visualización y el análisis de datos. Las herramientas más destacadas del stack son Elasticsearch, Logstash y Kibana (ELK).
La arquitectura de Elasticsearch aprovecha la estructura de indexación de Lucene y la combina con un modelo distribuido que separa la arquitectura en pequeños componentes, llamados shards, que pueden distribuirse en varios nodos.
En este artículo vas a aprender:
Elasticsearch es una solución de búsqueda y análisis escalable que admite multi-tenancy y proporciona búsquedas casi en tiempo real. Puedes usar Elasticsearch para habilitar búsquedas de todo tipo de datos y en varias ubicaciones. El motor ingiere datos de varias ubicaciones, los almacena e indexa según una asignación manual o automatizada predefinida.
Dado que Elasticsearch funciona con una arquitectura distribuida, los usuarios pueden buscar y analizar grandes volúmenes de datos casi en tiempo real. Además, Elasticsearch introduce la escalabilidad en el proceso de búsqueda, lo que te permite empezar con una sola máquina y escalar hasta cientos.
Puedes usar Elasticsearch para ejecutar un clúster de búsqueda con todas las funciones (también conocido como de texto completo), como búsqueda de documentos, búsqueda de productos y búsqueda de correo electrónico. Sin embargo, esto requiere un alto nivel de habilidades y experiencia. También puedes usar Elasticsearch para almacenar datos pendientes de trocear y datos que necesitan agruparse en categorías, como métricas, trazas y registros.
Elasticsearch se puede implementar en varios entornos en la nube, así como en las instalaciones. Tú puedes alojar Elasticsearch tú mismo o usar un servicio en la nube como AWS Elasticsearch.
Elasticsearch utiliza agentes de envío, llamados beats, para transferir datos sin procesar desde múltiples fuentes a Elasticsearch. Después de que los datos se envían a Elasticsearch, el motor ejecuta procesos de ingestión de datos, que analizan, normalizan, enriquecen y preparan los datos para la indexación. Después de que los datos están indexados, los usuarios pueden ejecutar consultas complejas y usar agregaciones para obtener resúmenes de datos complejos.
Para la visualización y gestión, Elastic Stack ofrece una herramienta llamada Kibana, que permite a los usuarios crear visualizaciones de datos en tiempo real, como gráficos circulares, mapas, gráficos de líneas e histogramas. Kibana también te deja compartir dashboards, usar Canvas para crear infografías dinámicas personalizadas y usar Elastic Maps para visualizar datos geoespaciales.
La arquitectura de Elasticsearch está diseñada para ofrecer escalabilidad y flexibilidad. Los componentes principales son los clústeres, nodos, fragmentos y analizadores de Elasticsearch.
Un clúster de Elasticsearch está compuesto por un grupo de nodos que almacenan datos. Puedes especificar el número de nodos que empiezan a ejecutarse con el clúster, así como la dirección IP del servidor virtual o físico. Puedes especificar esta información en el archivo config/elasticsearch.yml, que contiene todas las configuraciones.
Los nodos de un clúster de Elasticsearch están conectados entre sí y cada nodo contiene un pequeño fragmento de datos del clúster. Puedes ejecutar tantos clústeres como necesites. Sin embargo, normalmente un nodo es suficiente. El sistema crea automáticamente un clúster cuando se inicia un nodo nuevo. Los nodos participan en los procesos generales del clúster que se encargan de la búsqueda y la indexación.
En general, el término nodo se refiere a un servidor que funciona como parte del clúster. En Elasticsearch, un nodo es una instancia; no es una máquina. Esto significa que puedes ejecutar varios nodos en una sola máquina. Una instancia de Elasticsearch consiste en uno o más nodos basados en clúster. Por defecto, cuando se inicia una instancia de Elasticsearch, también empieza a ejecutarse un nodo.
Aquí tienes las tres opciones principales para configurar un nodo Elasticsearch:
La arquitectura de Elasticsearch utiliza dos puertos principales para la comunicación:
No hay límite en la cantidad de documentos que puedes almacenar en cada índice. Sin embargo, si un índice excede los límites de almacenamiento del servidor de alojamiento, Elasticsearch podría bloquearse. Para evitar este problema, los índices se dividen en pequeños fragmentos llamados shards.
Los shards son unidades de indexación pequeñas y escalables que sirven como bloques de construcción de la arquitectura de Elasticsearch. Los shards te permiten distribuir operaciones y mejorar el rendimiento general. Después de crear un índice, puedes crear tantos shards como necesites. Cada shard funciona como un índice Lucene independiente, que puedes alojar en cualquier lugar del clúster.
En Elasticsearch, las réplicas son copias de fragmentos de índice. Las réplicas se usan como un mecanismo a prueba de fallos para copia de seguridad y recuperación. Las réplicas nunca se colocan en el nodo que contiene los fragmentos originales (primarios).
Para garantizar la disponibilidad, las réplicas se almacenan en diferentes ubicaciones. Puedes definir las réplicas después de crear el índice y crear tantas réplicas como necesites. Esto significa que puedes almacenar más réplicas que shards primarios.
Los analizadores son responsables de analizar frases y expresiones en términos constitutivos. Esto ocurre durante el proceso de indexación. Cada analizador está compuesto por un tokenizador y varios filtros de token. Cuando se encuentra con una expresión determinada, el tokenizador puede dividir una cadena en términos predefinidos.
La arquitectura de Elasticsearch está diseñada para soportar la recuperación de documentos, que se almacenan como objetos JSON. Elasticsearch soporta estructuras anidadas, lo que ayuda a manejar datos y consultas complejas. Para rastrear información, Elasticsearch utiliza claves precedidas de un guion bajo, que representan metadatos.
NetApp Cloud Volumes ONTAP, la solución líder de gestión de almacenamiento de clase empresarial, ofrece servicios de gestión de almacenamiento seguros y probados en AWS, Azure y Google Cloud. Cloud Volumes ONTAP admite hasta una capacidad de 368TB y es compatible con varios casos de uso como servicios de archivos, bases de datos, DevOps o cualquier otra carga de trabajo empresarial, con un sólido conjunto de características que incluyen alta disponibilidad, protección de datos, eficiencias de almacenamiento, integración con Kubernetes y más.
Cloud Volumes ONTAP admite funciones avanzadas para gestionar el almacenamiento SAN en la nube, adaptándose a sistemas de bases de datos NoSQL, así como a recursos compartidos NFS a los que puedes acceder directamente desde clústeres de análisis de Big Data en la nube.
Además, Cloud Volumes ONTAP ofrece funciones de eficiencia del almacenamiento, incluyendo thin provisioning, compresión de datos y deduplicación, reduciendo la huella de almacenamiento y los costes hasta en un 70%.
Para saber más sobre cómo optimizar la implementación de Elasticsearch con NetApp, descarga gratis nuestro eBook Optimize Elasticsearch Performance and Costs with Cloud Volumes ONTAP hoy.