Una idea detrás de Elastic Stack y Elasticsearch

(10 de abril de 2020 )

Una breve introducción a Elasticsearch y ELK Stack. Por qué, qué y cómo.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

Historial

Elastic NV es una empresa que se fundó en 2012 en Ámsterdam, Shay Banon fue el fundador de Elasticsearch. Su primera iteración se llamó Compass. El segundo fue Elasticsearch (con Apache Lucene bajo el capó). Abrió Elasticsearch, creó el canal de IRC #elasticsearch y esperó a que aparecieran los usuarios. La respuesta fue impresionante. Los usuarios lo aceptaron de forma natural y sencilla. La adopción fue por las nubes, una comunidad comenzó a formarse y la gente se dio cuenta, a saber, Steven Schuurman, Uri Boness y Simon Willnauer. Juntos, fundaron una empresa de búsqueda.

¿Qué es Elastic Stack?

Elastic Stack también se conoce como ELK stack. Básicamente contiene tres proyectos de código abierto.

  1. Elastic Search – Motor de búsqueda y análisis .
  2. Logstash : canal de procesamiento de datos.
  3. Kibana – Panel para visualizar datos.

Todos estos tres tienen su propio significado y al combinar estos tres, Obtendrá análisis y análisis de sus datos.

¿Por qué es necesario?

Según la encuesta, Facebook genera 4 Petabytes de datos todos los días, es decir, 40 millones de GB . Los datos, ahora es un mundo de datos. Entonces necesitamos un sistema que analice nuestros datos.

¡¡Espera !! ¿Qué significa eso? Analizar.

Hay dos términos para entender.

  1. Análisis – En la parte de análisis, obtendrá resultados de los datos anteriores o de los datos existentes que tenga.
  2. Analytics – Cuando desea predecir los requisitos del usuario, desea una visualización basada en gráficos para una mejor claridad comercial y también desea comprender los patrones de datos.

Entonces, estas dos herramientas más importantes para cualquier negocio. Puede lograrlos con sus Data . Y con la ayuda de estos dos, puede hacer crecer su negocio y obtener información clara sobre el negocio.

Ahora, ¿cómo? Porque analizar esta gran cantidad de datos en menos tiempo no es una tarea fácil.

Desafíos y soluciones

Qué sucede en empresas muy grandes obtienen datos de diferentes lugares en diferentes formatos. Puede ser JSON o XML lo que sea. Entonces, necesitamos un mecanismo para obtener datos completos en un solo lugar y también en un formato. Entonces, para eso, usamos Logstash .

Ahora, cuando obtenemos datos, necesitamos organizarlos en un orden sistemático para que podamos evaluar las cosas muy fácilmente. Además, queremos analizar los datos, en ese caso, primero, revise los datos muy rápidamente. Para eso tenemos Elasticsearch. Elasticsearch se desarrolla en Java y se publica como código abierto según los términos de la licencia de Apache .

Ahora, después de completar esto, necesitamos una plataforma de visualización donde podamos mostrar nuestro análisis de datos. Allí Kibana entra en escena. Así es como funcionaba toda la pila de Elastic. Para obtener mejores información empresarial .

Proceso https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Configuración de Elasticsearch, Logstash y Kibana

Primero, descarguemos los tres software de código abierto desde sus respectivos enlaces [ elasticsearch ], [ logstash ] y [ kibana ]. Descomprima los archivos y coloque los tres en la carpeta del proyecto.

Comencemos.

Paso 1 : configura Kibana y Elasticsearch en el sistema local. Ejecutamos Kibana con el siguiente comando en la carpeta bin de Kibana.

bin\kibana

De manera similar, Elasticsearch se configura así:

bin\elasticsearch

Ahora, en los dos terminales separados, podemos ver ambos módulos ejecutándose.Para verificar que los servicios se estén ejecutando, abra localhost: 5621 para Kibana y localhost: 9600 para Elasticsearch.

Aquí, estamos listos con la configuración para la pila elástica. Ahora vaya a localhost: 5621 y abra las herramientas de desarrollo aquí en la consola. Es el lugar donde puede escribir consultas de Elasticsearch.

Consola Kibana

Ya que esta vez hablaremos más sobre Elasticsearch. Ahora veremos cómo funciona exactamente Elasticsearch.

Búsqueda elástica

Trabajo de Elastic Search

Antes de cualquier operación, tenemos que indexar nuestros Datos. Una vez indexados en Elasticsearch, los usuarios pueden ejecutar consultas complejas contra sus datos y usar agregaciones para recuperar resúmenes complejos de sus datos. Elasticsearch almacena datos como documentos JSON y usa Datastrucre como una índice invertido , que está diseñado para permitir búsquedas de texto completo muy rápidas . Un índice invertido enumera cada palabra única que aparece en cualquier documento e identifica todos los documentos en los que aparece cada palabra.

Para una mejor comprensión, divide Elasticsearch en varios temas.

  1. Gestión de documentos
  2. Mapeos
  3. Análisis
  4. Metodología de búsqueda
  5. Agregación y filtros

El aspecto más importante de Elasticsearch es comprender su arquitectura.

Clúster

En Elasticserach, almacenamos nuestros datos en nodos, puede haber n número de nodos en una máquina. Y cada nodo está relacionado con el clúster. Por tanto, el Cluster es un conjunto de nodos .

Documentos

Almacena sus datos como documentos que son objetos JSON. Entonces, ¿cómo se organizan estos datos en el clúster? La respuesta es índices .

En el mundo de las bases de datos relacionales, los documentos se pueden comparar con una fila en una tabla.

Índice

Los índices de Elasticsearch son particiones lógicas de documentos y se puede comparar con una base de datos en el mundo de las bases de datos relacionales.

Tipos

Cada índice tiene uno o más tipos de mapeo que se utilizan para dividir documentos en un grupo lógico. Es puede compararse con una tabla en el mundo de las bases de datos relacionales.

Cada documento se almacena como un índice . El índice que se puede decir es la colección de documentos. Eso tiene características similares, por ejemplo, el Departamento tendrá un índice A y los Empleados un índice B, es decir, están relacionados lógicamente.

Fragmentación

  1. La fragmentación es solo una forma de dividir el índice en piezas más pequeñas.
  2. Cada pieza se conoce como un fragmento.
  3. El fragmentado se realiza a nivel de índice.

El fragmento es como un índice. Para escalabilidad. Con la fragmentación, puede almacenar miles de millones de documentos dentro de un índice. También hay réplicas, pero por ahora, está lo suficientemente bien para que comencemos y entendamos Elasticsearch.

Así que avancemos más hacia la construcción y el motor de búsqueda.

1. Administrar documentos

Antes de eso, obtenga el administrador de paquetes Elasticserach.

npm i elasticsearch

Paso -1- Vincule su aplicación a Elasticsearch siguiendo.

Conexión

Paso 2 – Crear índice para un por ejemplo Creamos un índice como gov.

Crear índice

Paso 3 – Ahora agregaremos documentos a index gov y en index gov hay un tipo llamado distritos .

Puede relacionarse ya que hay una base de datos llamada gov y la tabla es distritos.

Agregar documentos

2. Mapeos

Mapeo es el proceso de definir el documento y sus campos. Al igual que definir esquema de tabla en RDBMS.

Paso 4: ahora definiremos asignaciones para indexar distritos de tipo gov.

Mapeos

3. Análisis

El análisis de texto es el proceso de convertir texto no estructurado , como el cuerpo de un correo electrónico o la descripción de un producto, en un formato estructurado optimizado para la búsqueda.

Elasticsearch realiza análisis de texto al indexar o buscar

text campos . Eso lo hemos definido en mapeos. Este es el factor clave para el motor de búsqueda.

De forma predeterminada, Elasticsearch utiliza el

standard analizador para todos los análisis de texto. El standard analizador le brinda compatibilidad inmediata con la mayoría de los lenguajes naturales y casos de uso . Si elige utilizar el standard analizador tal como está, no es necesario realizar ninguna configuración adicional. También puede crear su propio analizador personalizado.

4. Metodología de búsqueda

Existen diferentes tipos de consultas que puede aplicar a Elasticsearch. Con eso, obtendrá los resultados correspondientes. Aquí daré un ejemplo básico de una consulta.

La consulta más simple, que coincide con todos los documentos.

Consulta de búsqueda

Consultas

Las consultas compuestas envuelven otras consultas compuestas o de hoja, ya sea para combinar sus resultados y puntuaciones, para cambiar su comportamiento o para cambiar de una consulta a un contexto de filtro.

La consulta predeterminada para combinar varias cláusulas de consulta compuestas o de hoja, como must, should, must\_not, o filter cláusulas. Las cláusulas must y should tienen sus puntuaciones combinadas.

El texto completo Las consultas le permiten buscar campos de texto analizados , como el cuerpo de un correo electrónico. La cadena de consulta se procesa utilizando el mismo analizador que se aplicó al campo durante la indexación. Analizará su entrada. Si la entrada no es exacta, pero aún así, obtendrá un resultado.

Realizar uniones completas al estilo SQL en un sistema distribuido como Elasticsearch es prohibitivamente caro. En cambio, Elasticsearch ofrece dos formas de combinación que están diseñadas para escalar horizontalmente.

1.

nested consulta

2.

has\_child y

has\_parent consultas

Este grupo contiene consultas que no encajan en los otros grupos. Se encontró que los documentos que son de naturaleza similar, consultas ancladas también hay muchas más por favor. consulte su documentación .

Puede utilizar consultas a nivel de término para encontrar documentos basados ​​en datos precisos e valores en datos estructurados. Los ejemplos de datos estructurados incluyen intervalos de fechas, direcciones IP, precios o ID de productos.

A diferencia de las consultas de texto completo, las consultas a nivel de términos sí no analizar los términos de búsqueda. En cambio, las consultas a nivel de término coinciden con los términos exactos almacenados en un campo. Encontrará la coincidencia exacta de la entrada donde, como en el texto completo, primero se analizará y luego se buscará de manera que haya una gran diferencia entre la consulta de texto completo y de nivel de término.

5. Agregación y filtros

En un contexto de filtro, una cláusula de consulta responde a la pregunta “ ¿Este documento coincide con esta cláusula de consulta? La respuesta es un simple Sí o No: no se calcula ninguna puntuación. El contexto de filtro se usa principalmente para filtrar datos estructurados, por ejemplo,

  • ¿Esto timestamp cae dentro del rango 2015 a 2016?
  • ¿El campo status está configurado en "published"?

Elasticsearch almacenará automáticamente en caché los filtros de uso frecuente para acelerar el rendimiento.

El contexto del filtro está en vigor siempre que se pasa una cláusula de consulta a un filter parámetro, como los parámetros filter o must\_not en el

bool consulta, el parámetro filter en la consulta

constant\_score o la

filter agregación .

Con la agregación es más como en RDBMS, encontrará promedios, sumas y muchos datos valiosos mediante consultas complejas.

Resumen

  1. Qué es Elastic Stack.
  2. Cómo funciona ELK.
  3. Qué es Elasticsearch y cómo funciona.
  4. Algunas consultas básicas al respecto.

¡¡Qué sigue !!

Ya que es un tema enorme que cubrir. pero he intentado dar una breve introducción sobre ELK y Elasticsearch. A continuación, construiremos nuestra propia aplicación tipo motor de búsqueda utilizando Elasticsearch, donde también cubriré su parte de codificación. Cómo mantener su estructura de archivos y otras cosas.

Conclusión

Elastic Stack es una tecnología muy importante para aprender. Lo aplicará en cualquiera de sus proyectos y ELK Stack se usa con más frecuencia como herramienta de análisis de registros . Su popularidad radica en el hecho de que proporciona una forma confiable y relativamente escalable de agregar datos de múltiples fuentes, todavía quedan muchas cosas, pero después de esto, puede comenzar con Elasticsearch. Te recomiendo que revises su documentación . Si tiene alguna pregunta o encuentra algún problema con el contenido, deje un comentario.

Gracias 🙂