¿Qué es Elasticsearch?

Elasticsearch es un motor de analítica y análisis distribuido y open source para todos los tipos de datos, incluidos textuales, numéricos, geoespaciales, estructurados y desestructurados. Elasticsearch está desarrollado en Apache Lucene y fue presentado por primera vez en 2010 por Elasticsearch N.V. (ahora conocido como Elastic). Conocido por sus API REST simples, naturaleza distribuida, velocidad y escalabilidad, Elasticsearch es el componente principal del Elastic Stack, un conjunto de herramientas open source para la ingesta, el enriquecimiento, el almacenamiento, el análisis y la visualización de datos. Comúnmente referido como el ELK Stack (por Elasticsearch, Logstash y Kibana), el Elastic Stack ahora incluye una gran colección de agentes de envío conocidos como Beats para enviar los datos a Elasticsearch.

¿Para qué se usa Elasticsearch?

La velocidad y escalabilidad de Elasticsearch y su capacidad de indexar muchos tipos de contenido significan que puede usarse para una variedad de casos de uso:

  • Búsqueda de aplicaciones
  • Búsqueda de sitio web
  • Búsqueda Empresarial
  • Logging y analíticas de log
  • Métricas de infraestructura y monitoreo de contenedores
  • Monitoreo de rendimiento de aplicaciones
  • Análisis y visualización de datos geoespaciales
  • Analítica de Seguridad
  • Analítica de Negocios

¿Cómo funciona Elasticsearch?

Los datos sin procesar fluyen hacia Elasticsearch desde una variedad de fuentes, incluidos logs, métricas de sistema y aplicaciones web. La ingesta de datos es el proceso mediante el cual estos datos son parseados, normalizados y enriquecidos antes de su indexación en Elasticsearch. Una vez indexados en Elasticsearch, los usuarios pueden ejecutar consultas complejas sobre sus datos y usar agregaciones para recuperar resúmenes complejos de sus datos. Desde Kibana, los usuarios crean visualizaciones poderosas de sus datos, comparten dashboards y gestionan el Elastic Stack.

¿Qué es un índice de Elasticsearch?

Un índice de Elasticsearch es una colección de documentos relacionados entre sí. Elasticsearch almacena datos como documentos JSON. Cada documento correlaciona un conjunto de claves (nombres de campos o propiedades) con sus valores correspondientes (textos, números, Booleanos, fechas, variedades de valores, geolocalizaciones u otros tipos de datos).

Elasticsearch usar una estructura de datos llamada índice invertido, que está diseñado para permitir búsquedas de texto completo muy rápidas. Un índice invertido hace una lista de cada palabra única que aparece en cualquier documento e identifica todos los documentos en que ocurre cada palabra.

Durante el proceso de indexación, Elasticsearch almacena documentos y construye un índice invertido para poder buscar datos en el documento casi en tiempo real. La indexación comienza con la API de índice, a través de la cual puedes agregar o actualizar un documento JSON en un índice específico.

¿Para qué se usa Logstash?

Logstash, uno de los productos principales del Elastic Stack, se usa para agregar y procesar datos y enviarlos a Elasticsearch. Logstash es una pipeline de procesamiento de datos open source y del lado del servidor que te permite ingestar datos de múltiples fuentes simultáneamente y enriquecerlos y transformarlos antes de que se indexen en Elasticsearch.

¿Para qué se usa Kibana?

Kibana es una herramienta de visualización y gestión de datos para Elasticsearch que brinda histogramas en tiempo real, gráficos circulares y mapas. Kibana también incluye aplicaciones avanzadas, como Canvas, que permite a los usuarios crear infografías dinámicas personalizadas con base en sus datos, y Elastic Maps para visualizar los datos geoespaciales.

¿Por qué usar Elasticsearch?

Elasticsearch es rápido. Como Elasticsearch está desarrollado sobre Lucene, es excelente en la búsqueda de texto completo. Elasticsearch también es una plataforma de búsqueda en casi tiempo real, lo que implica que la latencia entre el momento en que se indexa un documento hasta el momento en que se puede buscar en él es muy breve: típicamente, un segundo. Como resultado, Elasticsearch está bien preparado para casos de uso con restricciones de tiempo como analítica de seguridad y monitoreo de infraestructura.

Elasticsearch es distribuido por naturaleza. Los documentos almacenados en Elasticsearch se distribuyen en distintos contenedores conocidos como shards, que están duplicados para brindar copias redundantes de los datos en caso de que falle el hardware. La naturaleza distribuida de Elasticsearch le permite escalar horizontalmente a cientos (o incluso miles) de servidores y gestionar petabytes de datos.

Elasticsearch viene con un amplio conjunto de características. Además de su velocidad, la escalabilidad y la resistencia, Elasticsearch tiene una cantidad de características integradas poderosas que contribuyen a que el almacenamiento y la búsqueda de datos sean incluso más eficientes, como data rollup y gestión de ciclo de vida del índice.

El Elastic Stack simplifica la ingesta de datos, la visualización y el reporte. La integración con Beats y Logstash facilita el proceso de datos antes de indexarlos en Elasticsearch. Y Kibana provee visualización en tiempo real de los datos de Elasticsearch así como UI para acceder rápidamente al monitoreo de rendimiento de aplicaciones (APM), los logs y los datos de métricas de infraestructura.

Preguntas frecuentes sobre Elasticsearch

¿Es Elasticsearch gratis?

Sí, las características open source de Elasticsearch son gratis para usar con la licencia Apache 2. Las características adicionales están disponibles con una licencia Elastic, y las suscripciones pagas brindan acceso a soporte y a características avanzadas como alertas y aprendizaje automático.

¿Cuál es la distribución oficial de Elasticsearch?

La distribución oficial de Elasticsearch está disponible en la página web de Elastic.

¿Quién puede contribuir al proyecto Elasticsearch?

Elasticsearch es un proyecto open source gestionado por Elastic. La base de código incluye contribuciones de desarrolladores tanto dentro como fuera de Elastic.

Cualquiera puede presentar una solicitud de extracción en el repositorio de GitHub de Elasticsearch. Elastic realiza una revisión transparente de todas las solicitudes de extracción antes de combinarlas en la base de código.

¿Cuáles son las opciones para desplegar Elasticsearch?

Elasticsearch puede descargarse como un servicio hospedado y gestionado a través de Elasticsearch Service (disponible en Amazon Web Services (AWS), Google Cloud Platform (GCP) y Alibaba Cloud), o puede descargarlo e instalarlo en tu propio hardware o en la nube. La documentación de Elasticsearch brinda instrucciones para descargar, instalar y configurar Elasticsearch.

Para los usuarios que quieren provisionar, gestionar y monitorear sus despliegues desde una consola única pero prefieren no usar una plataforma de cloud pública, Elastic también ofrece Elastic Cloud Enterprise (que puede desplegarse en clouds públicas o privadas, máquinas virtuales o hardware básico), así como un nivel de suscripción privada.

¿Qué lenguajes de programación soporta Elasticsearch?

Elasticsearch soporta una variedad de lenguajes y hay clientes oficiales para los siguientes:

  • Java
  • JavaScript (Node.js)
  • Go
  • .NET (C#)
  • PHP
  • Perl
  • Python
  • Ruby

¿Qué lenguajes de texto admite Elasticsearch?

Elasticsearch soporta 34 lenguajes de texto, desde árabe hasta tailandés, y provee analizadores para cada uno. Puedes encontrar la lista completa en la documentación del analizador de lenguaje de Elasticsearch. Se puede agregar soporte para idiomas adicionales con plugins personalizados.

¿Provee Elasticsearch API REST?

Sí, Elasticsearch provee un conjunto de API REST integral y poderoso para realizar tareas como comprobar la salud del cluster, realizar CRUD (crear, leer, actualizar y borrar) y operaciones de búsqueda en índices, y ejecutar operaciones de búsqueda avanzada, como filtrados o agregaciones.