Sei sulla pagina 1di 5

ElasticSearch es un motor de bsqueda orientado a documentos JSON basado en Lucene que

nos permite indexar un gran volumen de datos para poder hacer consultas sobre ellos
posteriormente. Esta desarrollado en JAVA de cdigo abierto. Las capacidades de bsqueda de
texto completo es a travs de una API web RESTful.

Le permite almacenar, buscar y analizar grandes volmenes de datos de forma rpida y casi en
tiempo real.

Se utiliza para bsqueda de texto completo, bsqueda estructurada, anlisis y los tres en
combinacin:

Wikipedia utiliza para proporcionar Elasticsearch bsqueda de texto completo con


fragmentos de bsqueda resaltados, y buscar-como-usted-tipo y lo hizo-le-medias
sugerencias.
The Guardian usa Elasticsearch para combinar registros de visitantes con datos de
redes sociales para proporcionar retroalimentacin en tiempo real a sus editores sobre
la respuesta del pblico a los nuevos artculos.
Stack Overflow combina la bsqueda de texto completo con consultas de
geolocalizacin y usa more-like-this para encontrar preguntas y respuestas
relacionadas.
GitHub usa Elasticsearch para consultar 130 mil millones de lneas de cdigo.

Aqu hay algunos ejemplos de casos de uso para los que Elasticsearch podra usarse:

Dirige una tienda web en lnea donde permite a sus clientes buscar productos que
vende. En este caso, puede usar Elasticsearch para almacenar todo su catlogo de
productos e inventario y proporcionarles sugerencias de bsqueda y autocompletar.
Desea recopilar datos de registro o transaccin y desea analizar y extraer estos datos
para buscar tendencias, estadsticas, resmenes o anomalas. En este caso, puede usar
Logstash (parte de la pila Elasticsearch / Logstash / Kibana) para recopilar, agregar y
analizar sus datos, y luego Logstash debe alimentar estos datos en Elasticsearch. Una
vez que los datos estn en Elasticsearch, puede ejecutar bsquedas y agregaciones
para extraer cualquier informacin que sea de su inters.
Usted ejecuta una plataforma de alerta de precios que permite a los clientes expertos
en precios especificar una regla como "Estoy interesado en comprar un gadget
electrnico especfico y quiero recibir una notificacin si el precio del gadget cae por
debajo de $ X de cualquier proveedor en el prximo mes". . En este caso, puede raspar
los precios de los proveedores, insertarlos en Elasticsearch y utilizar su capacidad de
bsqueda inversa (Percolator) para ajustar los movimientos de precios contra las
consultas de los clientes y eventualmente enviar las alertas al cliente una vez que se
encuentren las coincidencias.
Tiene necesidades analticas / de inteligencia empresarial y desea investigar, analizar,
visualizar y hacer preguntas ad-hoc rpidamente sobre una gran cantidad de datos
(piense en millones o miles de millones de registros). En este caso, puede usar
Elasticsearch para almacenar sus datos y luego usar Kibana (parte de la pila
Elasticsearch / Logstash / Kibana) para construir paneles personalizados que puedan
visualizar aspectos de sus datos que son importantes para usted. Adems, puede usar
la funcionalidad de agregaciones de Elasticsearch para realizar consultas complejas de
inteligencia empresarial en contra de sus datos.

Qu caractersticas tiene?

Arquitectura distribuida.
Escalabilidad: Gracias a su diseo nos permite escalar de forma horizontal e ir
escalando nuestros servidores segn nuestras necesidades.
Alta disponibilidad: Los clusters de ElasticSearch son capaces de detectar qu nodos
estn fallando y reorganizarse para hacer que los datos sean siempre accesibles.
Multi-Tenant Permite operar sobre mltiples ndices a la vez.
No utiliza esquemas: Permite trabajar sin una estructura fija de base de datos.
Orientado a documentos: Las entidades de Elasticsearch se almacenan como archivos
JSON estructurados donde todos los campos son indexados y podemos incluir todos
los ndices en una misma consulta.
Centrado en API's Expone casi todas sus funcionalidades va APIs REST.
Gestin de conflictos: Previene la prdida de datos al editar simultneamente los
registros.

Ninguna parte individual de Elasticsearch es nueva o revolucionaria. La bsqueda de texto


completo se ha realizado anteriormente, al igual que los sistemas de anlisisy bases de datos
distribuidas. La revolucin es la combinacin de estas partes individualmente tiles en una
nica aplicacin coherente en tiempo real. Tiene una baja barrera de entrada para el nuevo
usuario, pero puede seguirle el ritmo a medida que crecen sus habilidades y necesidades.
pueden realizar bsquedas de texto completo, manejar sinnimos y calificar documentos por
relevancia? Pueden generar analticas y agregaciones a partir de los mismos datos? Lo ms
importante, pueden hacer esto en tiempo real sin grandes trabajos de procesamiento por
lotes

Arquitectura

Para que quede un poco mas claro vamos a realizar una comparacin con una base de datos
relacional SQL

Database Elastisearch
database index
table type
row Document
schema mapping
SQL query DSL

Nodo

Un nodo es un servidor que forma parte del clster, almacena los datos, y participa en las
capacidades de indexacin y bsqueda del cluster.

Indice

Un ndice es una coleccin de documentos que tienen caractersticas algo similares.

Tipo

Dentro de un ndice, se pueden seleccionar uno o ms tipos. Un tipo es una categora /


particin lgica de su ndice de cuya semntica es totalmente suya. En general, un tipo se
define para documentos con un conjunto de campos comunes.

Documento

Un documento es una unidad bsica de informacin que puede ser indexado. Este documento
se expresa en JSON (JavaScript Object Notation), que es un formato de intercambio de datos
de Internet ubicua.

Y qu puede hacer?

Bsquedas no estructuradas Todos los items que contengan la palabra curso.


Bsquedas estructuradas Items oro vendidos por el user X en Marzo.
Aggregations / Facetas Promedio de precios de los items de la categora C.
Combinaciones de todo lo anterior Promedio de precios de los items vendidos en
Abril de los usuarios X e Y en la categora C.
y todo en tiempo casi real!

Shard(Fragmento ) y rplicas

Un ndice puede almacenar una gran cantidad de datos que puede exceder los lmites de
hardware de un solo nodo.

Para resolver este problema, Elasticsearch ofrece la posibilidad de subdividir el ndice en varios
trozos llamados fragmentos. Cuando se crea un ndice, slo tiene que definir el nmero de
fragmentos que desee. Cada fragmento es en s mismo un ndice totalmente funcional e
independiente que se puede alojar en cualquier nodo del clster.

Sharding es importante por dos razones principales:

* Permite dividir horizontalmente / o reducir el volumen de contenido.

* Permite distribuir y paralelizar las operaciones a travs de fragmentos (potencialmente en


varios nodos) aumentando as el rendimiento.

La replicacin es importante por dos razones principales:

* Proporciona alta disponibilidad en caso de que falle un fragmento/nodo. Por esta razn, es
importante tener en cuenta que un fragmento de rplica no se asigna en el mismo nodo que
el fragmento primario/original que fue copiado.

* Se le permite escalar volumen de bsquedas y / rendimiento puesto que las bsquedas se


pueden ejecutar en todas las rplicas en paralelo.

Ventajas

Se podran enumerar varias ventajas que brinda esta herramienta. Algunas de las ms
destacables son las siguientes:

Al estar desarrollado en Java, es sumamente compatible con casi todas las plataformas.

Tiene una gran velocidad de respuesta.

Esta distribuido, lo que lo hace fcilmente escalable y adaptable a las distintas situaciones.

Simple realizar respaldos de los datos que se tienen.

Utiliza objetos JSON como respuesta, por lo que es fcil de invocar a partir de varios lenguajes
de programacin.

Desventajas

Como todo, ElasticSearch posee algunas (pocas) desventajas:


Solo soporta como tipos de respuesta JSON, lo que si bien lo hace accesible, tambin lo limita
al no involucrar otros lenguajes, como podran ser: CSV o XML.

Puede suceder que en algunas situaciones caiga en un caso de "split brain".

Potrebbero piacerti anche