Elasticsearch - Conceptos básicos

Elasticsearch es un servidor de búsqueda basado en Apache Lucene. Fue desarrollado por Shay Banon y publicado en 2010. Ahora es mantenido por Elasticsearch BV. Su última versión es 7.0.0.

Elasticsearch es un motor de análisis y búsqueda de texto completo distribuido en tiempo real y de código abierto. Es accesible desde la interfaz de servicio web RESTful y usa documentos JSON (notación de objetos JavaScript) sin esquema para almacenar datos. Está construido en lenguaje de programación Java y, por lo tanto, Elasticsearch puede ejecutarse en diferentes plataformas. Permite a los usuarios explorar una gran cantidad de datos a muy alta velocidad.

Características generales

Las características generales de Elasticsearch son las siguientes:

  • Elasticsearch es escalable hasta petabytes de datos estructurados y no estructurados.

  • Elasticsearch se puede utilizar como reemplazo de almacenes de documentos como MongoDB y RavenDB.

  • Elasticsearch utiliza la desnormalización para mejorar el rendimiento de la búsqueda.

  • Elasticsearch es uno de los motores de búsqueda empresarial más populares y actualmente lo utilizan muchas grandes organizaciones como Wikipedia, The Guardian, StackOverflow, GitHub, etc.

  • Elasticsearch es un código abierto y está disponible bajo la licencia Apache versión 2.0.

Conceptos clave

Los conceptos clave de Elasticsearch son los siguientes:

Nodo

Se refiere a una única instancia en ejecución de Elasticsearch. Un solo servidor físico y virtual acomoda múltiples nodos dependiendo de las capacidades de sus recursos físicos como RAM, almacenamiento y potencia de procesamiento.

Racimo

Es una colección de uno o más nodos. Cluster proporciona capacidades colectivas de indexación y búsqueda en todos los nodos para datos completos.

Índice

Es una colección de diferentes tipos de documentos y sus propiedades. Index también utiliza el concepto de fragmentos para mejorar el rendimiento. Por ejemplo, un conjunto de documentos contiene datos de una aplicación de red social.

Documento

Es una colección de campos de una manera específica definida en formato JSON. Cada documento pertenece a un tipo y reside dentro de un índice. Cada documento está asociado con un identificador único llamado UID.

Casco

Los índices se subdividen horizontalmente en fragmentos. Esto significa que cada fragmento contiene todas las propiedades del documento pero contiene menos cantidad de objetos JSON que índice. La separación horizontal hace que el fragmento sea un nodo independiente, que se puede almacenar en cualquier nodo. El fragmento primario es la parte horizontal original de un índice y luego estos fragmentos primarios se replican en fragmentos de réplica.

Réplicas

Elasticsearch permite al usuario crear réplicas de sus índices y fragmentos. La replicación no solo ayuda a aumentar la disponibilidad de datos en caso de falla, sino que también mejora el rendimiento de la búsqueda al realizar una operación de búsqueda paralela en estas réplicas.

Ventajas

  • Elasticsearch está desarrollado en Java, lo que lo hace compatible en casi todas las plataformas.

  • Elasticsearch es en tiempo real, en otras palabras, después de un segundo, el documento agregado se puede buscar en este motor.

  • Elasticsearch está distribuido, lo que facilita la ampliación e integración en cualquier gran organización.

  • La creación de copias de seguridad completas es fácil mediante el concepto de puerta de enlace, que está presente en Elasticsearch.

  • Manejar la tenencia múltiple es muy fácil en Elasticsearch en comparación con Apache Solr.

  • Elasticsearch utiliza objetos JSON como respuestas, lo que hace posible invocar el servidor Elasticsearch con una gran cantidad de lenguajes de programación diferentes.

  • Elasticsearch admite casi todos los tipos de documentos, excepto aquellos que no admiten la representación de texto.

Desventajas

  • Elasticsearch no tiene soporte en varios idiomas en términos de manejo de datos de solicitud y respuesta (solo es posible en JSON) a diferencia de Apache Solr, donde es posible en formatos CSV, XML y JSON.

  • Ocasionalmente, Elasticsearch tiene un problema de situaciones de cerebro dividido.

Comparación entre Elasticsearch y RDBMS

En Elasticsearch, el índice es similar a las tablas en RDBMS (Relation Database Management System). Cada tabla es una colección de filas al igual que cada índice es una colección de documentos en Elasticsearch.

La siguiente tabla ofrece una comparación directa entre estos términos.

Elasticsearch RDBMS
Racimo Base de datos
Casco Casco
Índice Mesa
Campo Columna
Documento Fila