Elasticsearch (ES) es un motor de búsqueda empresarial de código abierto, ampliamente distribuible y fácilmente escalable. Accesible a través de una API extensa y elaborada, Elasticsearch puede impulsar búsquedas extremadamente rápidas que respaldan sus aplicaciones de descubrimiento de datos.
Está construido sobre Apache Lucene, una biblioteca de indexación y búsqueda basada en Java. Elasticsearch proporciona funciones de clúster distribuido y fragmentación para índices de Lucene, funcionalidad avanzada de búsqueda y agregación, así como alta disponibilidad, seguridad, un módulo de instantánea / restauración y otras funciones de gestión de datos. La plataforma también proporciona características tales como agrupación de subprocesos, API de monitoreo de nodos / clústeres, colas, API de monitoreo de datos, administración de clústeres, etc.
En resumen, Elasticsearch permite administrar índices de Lucene a escala, proporcionando almacenamiento y funcionalidad de búsqueda para grandes clústeres de datos distribuidos en los centros de datos.
Elasticsearch es una opción perfecta para aplicaciones de comercio electrónico, motores de recomendación y análisis de datos de series de tiempo (registros, métricas, etc.) e información geoespacial. Además, puede utilizar Elasticsearch para crear funciones de autocompletado y sugerencias contextuales, analizar contenido lingüístico y crear funciones de detección de anomalías. Elasticsearch también se usa ampliamente para IoT.
Historia
Desde su lanzamiento en 2010, Elasticsearch se ha convertido rápidamente en el motor de búsqueda más popular y se utiliza habitualmente para análisis de registros, búsqueda de texto completo, inteligencia de seguridad, análisis empresarial y casos de uso de inteligencia operativa.
El 21 de enero de 2021, Elastic NV anunció que cambiaría su estrategia de licencias de software y no lanzaría nuevas versiones de Elasticsearch y Kibana bajo la licencia permisiva Apache, versión 2.0 (ALv2). En su lugar, las nuevas versiones del software se ofrecerán bajo la licencia Elastic, con el código fuente disponible bajo la licencia Elastic o SSPL. Estas licencias no son de código abierto y no ofrecen las mismas libertades a los usuarios. Para garantizar que la comunidad de código abierto y nuestros clientes dispongan de un conjunto de búsqueda y análisis seguro, de alta calidad y completamente de código abierto, presentamos el proyecto OpenSearch, una bifurcación de Elasticsearch y Kibana de código abierto impulsada por la comunidad y con licencia ALv2.
Funcionamiento
Puede enviar datos en forma de documentos JSON a Elasticsearch con la API o herramientas de ingesta como Logstash y Amazon Kinesis Firehose. Elasticsearch almacena automáticamente el documento original y agrega una referencia de búsqueda al documento en el índice del clúster. A continuación, puede buscar y recuperar el documento mediante la API de Elasticsearch. También puede utilizar Kibana, una herramienta de visualización, con Elasticsearch para visualizar sus datos y crear paneles interactivos.
Puede ejecutar versiones de Elasticsearch con licencia Apache 2.0 (hasta la versión 7.10.2 y Kibana 7.10.2) en las instalaciones, en Amazon EC2 o en Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service). Con las implementaciones en las instalaciones o en Amazon EC2, es su responsabilidad instalar Elasticsearch y cualquier otro software necesario, aprovisionar la infraestructura y administrar el clúster. Por otro lado, Amazon OpenSearch Service es un servicio completamente administrado, por lo que no tiene que preocuparse de las tareas de administración de clústeres que requieren mucho tiempo, como el aprovisionamiento de hardware, la aplicación de parches de software, la recuperación de errores, las copias de seguridad y el monitoreo.
Las ventajas de ElasticSearch incluyen las siguientes:
- Opciones de búsqueda. ElasticSearch implementa muchas características cuando se trata de búsqueda, como la división de texto personalizado en palabras, la raíz personalizada, la búsqueda por facetas, la búsqueda de texto completo, el autocompletado y la búsqueda instantánea. Además, la búsqueda aproximada es buena para errores ortográficos. Puede encontrar lo que buscas aunque tenga un error de ortografía. El autocompletado y la búsqueda instantánea se refieren a la búsqueda mientras el usuario escribe.
- Orientado a documentos. ElasticSearch almacena entidades complejas del mundo real como documentos JSON estructurados e indexa todos los campos de forma predeterminada, con un resultado de mayor rendimiento.
- Velocidad. Hablando de rendimiento, es capaz de ejecutar consultas complejas extremadamente rápido. También almacena en caché casi todas las consultas estructuradas que se usan comúnmente como filtro para el conjunto de resultados y las ejecuta solo una vez. Para cada otra solicitud que contenga un filtro en caché, verifica el resultado de la caché.
- Escalabilidad. Los equipos de desarrollo de software prefieren ElasticSearch porque es un sistema distribuido por naturaleza y puede escalar horizontalmente fácilmente, lo que brinda la capacidad de extender recursos y equilibrar la carga entre los nodos de un clúster.
- Registro de datos. ElasticSearch registra cualquier cambio realizado en los registros de transacciones en varios nodos del clúster para minimizar la posibilidad de pérdida de datos.
- Consulta de ajuste fino. Tiene un potente DSL basado en JSON, que permite a los equipos de desarrollo construir consultas complejas y ajustarlas para recibir los resultados más precisos de una búsqueda. También proporciona una forma de clasificar y agrupar los resultados.
- API RESTful. ElasticSearch está impulsado por API, por lo que las acciones se pueden realizar utilizando una API RESTful simple.
- Enfoque distribuido. Los índices se pueden dividir en fragmentos, y cada fragmento puede tener cualquier número de réplicas. Las operaciones de enrutamiento y reequilibrio se realizan automáticamente cuando se agregan nuevos documentos.
- Multi Alquiler. A menudo, tiene varios clientes o usuarios con colecciones de documentos independientes y un usuario nunca debería poder buscar documentos que no le pertenezcan. Esto a menudo conduce a un diseño en el que cada usuario tiene su propio índice.