ID4YOU

Elasticsearch: tuneando los motores de búsqueda

 

Elasticsearch (en adelante ES) nació para poder potenciar los sitios de búsqueda indexando grandes volúmenes de datos y realizar consultas en base a ellos soportando por ejemplo, búsquedas aproximadas, facetas y resaltado.  Puede emplearse para hacer consultas de texto completo, obteniendo resultados rápidamente.

Aparece, como dijimos, intentando brindar una solución a las búsquedas en las entidades de dominio. Elasticsearch se apoya en un motor de búsqueda de alto rendimiento conocido como Lucene, trabajando por medio de una interfaz REST (accede al servidor el conjunto de órdenes del protocolo HTTP confiando en los mensajes informativos y de error del mismo) que permite utilizarse por cualquier plataforma como java, python, .NET, PHP e incluso Javascript.

 

Cuenta además con persistencia, de manera tal de que los catálogos indexados sobrevivan a un reinicio de servidor.

ES también funciona para hacer búsquedas vagas (fuzzy) y soporta múltiples analizadores según el idioma de la propiedad que se busque.

 

 

Su instalación es sencilla. Debemos descargar el archivo de distribución, descomprimirlo e iniciarlo.

http://www.elasticsearch.org/overview/elkdownloads/

 

Este producto usa sus propios conceptos y, aunque no es una base de datos relacional, algunos pueden ser similares. Lo que en una base de datos relacional es un esquema en ES es un índice, lo que en la primera es una tabla en ES es un tipo, continuando una fila en ES es un documento y finalmente una columna es una propiedad en ES.

 

ES, a diferencia de otros sistemas similares, no necesita declarar un esquema de la información que añadimos, pero para sacar mayor partido y obtener mejores resultados, se debe realizar un proceso de mapeo (mapping) del catálogo a indexar. Este proceso permite declarar las propiedades y funcionamientos deseados ante determinadas búsquedas.

 

Conceptos básicos en los que se basa Elasticsearch

Cluster: uno o más nodos que soportan la información distribuida e indexada.

Node: los nodos son servers que almacenan datos colaborando con las tareas de indexación. Se identifican bajo el nombre de un personaje de Marvel (sí, en serio).

Index: se trata de colecciones de documentos con características similares y nombres únicos.

ES aparece como la heroína a la hora de superar el límite indexado en una máquina a partir de dos caminos posibles:

El SHARDING, que divide los índices en piezas, escalando horizontalmente (añadiendo más servidores) y distribuyendo las operaciones que hagamos sobre los mismos índices de forma distribuída.

Por su lado, la REPLICACION nos ofrece un mecanismo previsorio en caso de fallas.

 

Ventajas de Elasticsearch en arquitectura multicluster

Una arquitectura de varios clústeres brinda las siguientes ventajas:

Mejor fiabilidad: Los problemas de un solo clúster sólo afectan a una pequeña proporción de usuarios.

Mejor rendimiento de la aplicación: en un entorno de varios clústeres, se pueden asignar recursos de forma más eficaz para la indexación, la búsqueda y el estado del clúster, ya que cada clúster es más pequeño.

Actualizaciones más sencillas: no sólo se actualizan clústeres más pequeños, sino que también se puede desplegar el clúster de actualización por clúster, lo que reduce el riesgo de un error de muy grande.

En el peor de los casos, es más fácil reemplazar completamente un clúster, ya que ninguno es tan grande como para que su reemplazo tenga un costo tan elevado.

Mayor tiempo de actividad general: Incluso si existe tiempo de inactividad, es muy poco probable que se saque cada clúster.