💾🔍 Qué es ELASTICSEARCH | Cómo INSTALARLO en UBUNTU | EJEMPLO INSERTAR, MODIFICAR y BUSCAR FILAS 👌✅

Enviado por admin el Dom, 10/01/2021 - 14:29

💾🔍 Qué es ELASTICSEARCH | Cómo INSTALARLO en UBUNTU | EJEMPLO INSERTAR, MODIFICAR y BUSCAR FILAS 👌✅

¿Qué es Elasticsearch?

En esta entrada trataré de explicaros que es elasticsearch y como instalarlo en una máquina con Ubuntu 18.04. También, os mostraré un ejemplo práctico en el que insertaremos, modificaremos y eliminaremos filas de datos, sobre las cuales realizaremos consultas de búsqueda.

Elasticsearch es un motor de análisis y búsqueda distribuido, RESTful y de código abierto construido sobre Apache Lucene. Fue lanzado en 2010 por la empresa elastic, quien se encarga de su mantenimiento, y gracias a la cual rápidamente se ha convertido en el motor de búsqueda más popular, utilizándose sobretodo para el análisis de registros logs y búsqueda de texto completo. Está desarrollado en Java y es compatible con los lenguajes más populares, como Python y PHP.

¿Por qué usar Elastisearch?

Las empresas con grandes bases de datos se enfrentan a problemas como la recuperación de información durante mucho tiempo. Esto conduce a una mala experiencia del usuario y, a su vez, a perder al cliente potencial. Te pongo un ejemplo, si cuando buscas un producto en amazon, tarda más de 30 segundos en devolverte los resultados, seguramente no busques un segundo producto o directamente no vuelvas a entrar en la web. Esta herramienta se puede utilizar para buscar todo tipo de datos, permite las búsqueda en tiempo real y proporciona una solución escalable. Su arquitectura distribuida permite buscar y analizar grandes volúmenes de datos en tiempo real, y facilita la ejecución de un clúster de búsqueda con todas las funciones. En comparación con la mayoría de las bases de datos NoSQL. Además, esta herramienta está equipada con una potente API HTTP RESTful que le permite realizar búsquedas rápidas en tiempo real.

El retraso en la búsquedas se atribuye a las bases de datos relacionales, donde los datos, que se quieren recuperar, se encuentran dispersos entre varias tablas y la recuperación de información requiere una consulta que una varias de ellas. Las bases de datos relacionales funcionan comparativamente lento cuando se trata de datos enormes y de obtener resultados de búsqueda a través de consultas de la base de datos. Las empresas hoy en día buscan formas alternativas donde los datos se almacenen de tal manera que la recuperación sea rápida. Esto se puede lograr utilizando bases de datos NoSQL en lugar de bases de datos relacionales para almacenar datos. Elasticsearch es una de esas bases de datos distribuidas NoSQL, la cual se basa en modelos de datos flexibles para crear y actualizar los perfiles de los visitantes a fin de cumplir con la carga de trabajo exigente y la baja latencia requeridas para la participación en tiempo real.

¿Cómo funciona Elasticsearch realmente?

Puedes enviar datos en formato JSON a Elasticsearch utilizando la API o herramientas de ingesta de datos como Logstash o kafka-connect. Esta herramienta almacena automáticamente el documento original y agrega una referencia de búsqueda al documento en el índice del cluster. De esta forma te permite buscar y recuperar el documento mediante la API de Elasticsearch. También puedes utilizar Kibana, una herramienta de visualización de código abierto, con Elasticsearch para visualizar sus datos y crear paneles interactivos. Para una mejor comprensión, no estaría de más conocer los conceptos básicos de sus componentes.

  • Documento: simplemente, es una unidad básica de información que debe indexarse. Dentro de un índice se pueden almacenar muchos documentos.
  • Índice: colección de documentos con características similares identificados por un nombre único.

Ventajas

  1. API fácil de usar: proporciona API RESTful simples que hacen que indexar, buscar y consultar los datos sea realmente fácil.
  2. Velocidad: el uso de índices invertidos para encontrar las mejores coincidencias para sus búsquedas de texto completo lo hace realmente rápido incluso cuando se busca en conjuntos de datos muy grandes.
  3. Sin esquema: acepta documentos JSON.
  4. Escalabilidad: es muy fácil de escalar y también confiable. Solo tendrías que añadir otro nodo, y cambiar la configuración
Elasticsearch

Ejemplo práctico

Comprobamos que se ha instalado correctamente
> curl -XGET "localhost:9200/"

Insertamos datos de prueba

> curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/departamento/empleados/1" -d "{ \"nombre\" : \"Manuel\", \"Apellido\" : \"Perez\", \"descripcion_puesto\" : \"Jefe de departamento\" }"


Comprobamos que se ha introducido bien

> curl -X GET "localhost:9200/departamento/empleados/1" 

Modificamos el puesto

> curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/departamento/empleados/1/_update" -d "{ \"doc\":{ \"descripcion_puesto\" : \"Adjunto al jefe del departamento \" } }"

Comprobamos que se ha actualizado correctamente
> curl -XGET "http://localhost:9200/departamento/empleados/1"


Introducimos a un segundo empleado

> curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/departamento/empleados/2" -d "{ \"nombre\" : \"Ania\", \"Apellido\" : \"Valladares\", \"descripcion_puesto\" : \"Jefa del departamento\" }"


Comprobamos que se ha insertado correctamente
> curl -XGET "http://localhost:9200/departamento/empleados/2"


Realizamos una búsqueda

> curl -XGET "http://localhost:9200/_search?q=Ania"

> curl -XGET "http://localhost:9200/_search?q=Departamento"

> curl -XGET "http://localhost:9200/_search?q=descripcion_puesto:Jefa"


Eliminamos a un empleado

> curl -XDELETE "http://localhost:9200/departamento/empleados/1"