Big Data

Características de la arquitectura de Elasticsearch

Te contamos cuales son las principales características de la arquitectura de Elasticsearch y cómo funciona para almacenar los datos.

Publicado el 19 de Febrero de 2019
Compartir

Principales características de Elasticsearch

  • Su escalabilidad horizontal, que es su principal característica y en la que se centró el diseño de su arquitectura.
  • Tiene respuestas próximas al tiempo real, ya que la latencia es menor de un segundo desde que se indexa hasta que el dato está disponible para la búsqueda.
  • Es tolerante a fallos en los nodos, lo que ofrece alta disponibilidad al tener replicación de los datos en nodos diferentes.
  • Dispone de funciones de búsqueda en texto completo, ya que se considera todo el contenido de los documentos para la búsqueda, a diferencia de lo que ocurre en una base de datos convencional, en la que solo se consideran campos concretos como el título o las referencias.
  • Está orientado a documentos JSON.
  • No requiere esquemas, por lo que tiene un indexado rápido se autodetectan los tipos de cada campo al generarlos.
  • Tiene un desarrollo amigable con unas Apis sencillas.

Escalabilidad de Elasticsearch

Elasticsearch tiene una escalabilidad horizontal en lugar de una escalabilidad vertical.

La diferencia entre ambas es que la escalabilidad vertical implica tener un mejor hardware, es decir, cuando necesitamos tener un sistema más potente lo que hacemos es comprar más disco duro, memoria o procesador. Esto es limitado, ya que la cantidad de mejoras que podemos hacer un mismo equipo siempre es limitada, y llegará un momento en el que no se pueda ampliar más.

En la escalabilidad horizontal se tienen varios nodos trabajando como único servidor, con lo cual se puede ampliar indefinidamente.

Cómo funciona el almacenamiento en Elasticsearch

El almacenamiento en Elasticsearch destacar varios aspectos:

  • Almacena documentos en índices, que son la unidad principal. Antes de Elasticsearch 6 se solía utilizar la analogía entre un índice y una base de datos, y una tabla y un documento, y era posible para un índice de Elasticsearch tener varios tipos. Sin embargo se comprobó que este sistema generaba problemas en la capacidad de comprensión de Lucen, que está en la capa de software por debajo de Elasticsearch, y se decidió que sólo fuera posible tener un solo tipo de datos por índice.
  • Los índices se dividen en shards o fragmentos.
  • Cada fragmento puede ubicarse en un nodo diferente del clúster.
  • Tiene tolerancia a fallos, lo que se consigue mediante shards primarios y réplicas de los mismos en otros nodos.
  • Las escrituras se realizan sobre shards primarios, los cuales luego son replicado, con lo cual este sistema de réplicas hace que el tiempo de escritura sea un poco mayor para poder realizar las réplicas.
  • Las lecturas se pueden realizar tanto sobre shards primarios como sobre las réplicas, con lo cual mejora la capacidad de lectura.

Ejemplo del funcionamiento de Elasticsearch

Vamos a ver un ejemplo grafico de cómo funciona el almacenamiento en Elasticsearch:

Imagen 0 en Características de la arquitectura de Elasticsearch

En la parte superior de la imagen podemos ver que tenemos un índice dividido en dos shards, denominados P0 y P1, con tres nodos y dos réplicas por cada shard.

Tenemos el nodo 1, el nodo 2 y el nodo 3, y dentro de ellos marcadas en verde los shards primarios y en gris las réplicas.

Si falla uno de los nodos, las réplicas pasan a ser primarias, y al tener dos shards menos se volverían a generar nuevas réplicas.

En este caso nos quedaría como vemos en la parte inferior de la imagen, en la que habría fallado el nodo 1 maestro, pero no ha ocurrido nada porque el rol de maestro lo ha pasado ocupar el nodo 2, y el sistema sigue funcionando como antes.

Otras características de los shards y las réplicas

  • El número de shards se puede definir al crear el índice y es fijo una vez que se ha creado ese índice.
  • El número de réplicas se puede cambiar dinámicamente.
  • Por defecto, un índice tiene cinco shards y una réplica, la cual solo tiene efectos si tenemos dos nodos, ya que si solo tenemos uno, no habría ningún sitio donde se pueda replicar.
Este curso de Elasticsearch te permitirá conocer a fondo la arquitectura de Elasticsearch para aprender a comunicar Java con este potente servidor de búsquedas basado en Lucene.
 
cursos-elasticsearch-busqueda

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Compartir este post

También te puede interesar...

Tecnología

¿QUÉ ES ELK? ElasticSearch, Logstash y Kibana

30 Julio 2018 Sergio Losada
Artículos
Ver todos