¿Qué es Elastic Stack y Elasticsearch?

Elastic Stack es un grupo de productos que pueden tomar datos de forma confiable y segura de cualquier fuente, en cualquier formato, y luego buscarlos, analizarlos y visualizarlos en tiempo real. Elasticsearch es un motor de análisis y búsqueda RESTful distribuido que puede abordar una gran cantidad de casos de uso. También considerado como el corazón de Elastic Stack, almacena de forma centralizada los datos de los usuarios para una búsqueda de alta eficiencia, una excelente relevancia y un análisis potente que es altamente escalable.

Productos principales de Elastic Stack

Los productos principales que definen una pila elástica se enumeran a continuación:

  • Elastic Search : motor de búsqueda y análisis.
  • Logstash : tubería de procesamiento de datos.
  • Kibana – Tablero para visualizar datos. 
     

Todos estos tres tienen su propio significado y al combinarlos 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. Así que necesitamos un sistema que analice nuestros datos. Hay dos términos para entender:

  • Análisis : en la parte de análisis, obtendrá resultados de los datos anteriores o los datos existentes que tiene.
  • Análisis : cuando desea predecir los requisitos del usuario, desea una visualización basada en gráficos para una mejor claridad empresarial y también desea comprender los patrones de datos.
     

Así que estas dos herramientas más importantes para cualquier negocio. Puede lograrlos con sus datos. Y con la ayuda de estos dos, puede hacer crecer su negocio y obtener información comercial clara. Ahora, es ¿Cómo? Porque analizar estos grandes datos en menos tiempo no es tarea fácil. 

Desafíos y soluciones: 

  • Lo que sucede en empresas muy grandes es que obtienes datos de diferentes lugares en diferentes formatos. Puede ser JSON o XML lo que sea. Por lo tanto, 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 con mucha facilidad. Además, queremos analizar los datos, en ese caso, Primero, procesar 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 nuestros análisis de datos. Allí Kibana entra en escena. Así es como funcionó todo el stack de Elastic. Para obtener mejores perspectivas comerciales.
     

elasticsearch

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. En primer lugar, configure 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 los dos módulos en ejecución. Para comprobar 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. Como hablaremos más sobre Elasticsearch esta vez. Ahora veremos cómo funciona exactamente Elasticsearch.

Trabajo de búsqueda elástica 

Antes de cualquier operación, tenemos que indexar nuestros Datos. Una vez indexados en Elasticsearch, los usuarios pueden ejecutar consultas complejas en sus datos y usar agregaciones para recuperar resúmenes complejos de sus datos. Elasticsearch almacena datos como documentos JSON y utiliza la estructura de datos como un í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, dividiremos Elasticsearch en varios temas.

  • Gestión de documentos 
  • Asignaciones 
  • Análisis 
  • Metodología de búsqueda 
  • Agregación y filtros

Arquitectura de Elastic Search:

  • Clúster: en Elasticserach, almacenamos nuestros datos en Nodes, puede haber n número de Nodes en una máquina. Y cada Node está relacionado con el clúster. Entonces el Cluster es un conjunto de Nodes.
     
  • 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 pueden 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 asignación que se utilizan para dividir los documentos en un grupo lógico. Se puede comparar 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 tendrán un índice B, es decir, están relacionados lógicamente.
     
  • Fragmentación  
    a) La fragmentación es solo una forma de dividir el índice en partes más pequeñas. 
    b) Cada pieza se conoce como fragmento. 
    c) La fragmentación se realiza a nivel de índice.
    Shard 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, es lo suficientemente bueno para que comencemos y entendamos Elasticsearch. Así que avancemos más hacia la construcción y el motor de búsqueda.

1. Gestión de documentos 

Antes de eso, obtenga el administrador de paquetes de Elasticserach. 

npm -i elasticsearch 

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

javascript

var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
  host: 'localhost:9200',
  log: 'trace',
  // use the same version
  // of your Elasticsearch instance
  apiVersion: '7.2', 
});
  
module.exports = client;  

 

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

javascript

// Write Javascript code here
var client = require('./connection.js');
  
client.indices.create({  
  index: 'gov'
},function(err,resp,status) {
  if(err) {
    console.log(err);
  }
  else {
    console.log("create",resp);
  }
});

 

Paso 3: ahora agregaremos documentos a index gov y en index gov, hay un tipo llamado distritos electorales. Puede relacionarse ya que hay una base de datos llamada gov y la tabla es distritos electorales. 
 

javascript

// Write Javascript code here
var client = require('./connection.js');
  
client.index({  
  index: 'gov',
  id: '1',
  type: 'constituencies',
  body: {
    "ConstituencyName": "Ipswich",
    "ConstituencyID": "E14000761",
    "ConstituencyType": "Borough",
    "Electorate": 74499,
    "ValidVotes": 48694,
  }
},function(err,resp,status) {
    console.log(resp);
});

2. Asignaciones 

El mapeo es el proceso de definición del documento y sus campos. Al igual que definir el esquema de tabla en RDBMS. 

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

javascript

var client = require('./connection.js');
  
<code>client.indices.putMapping({  
  index: 'gov',
  type: 'constituencies',
  body: {
    properties: {
      'constituencyname': {
        // type is a required
        // attribute if index
        // is specified
        'type': 'string', 
        'index': false
      },
      'electorate': {  
        'type': 'integer'
      },
      'validvotes': {  
        'type': 'integer'
      }
    }
  }
},function(err,resp,status){
    if (err) {
      console.log(err);
    }
    else {
      console.log(resp);
    }
});

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 que está optimizado para la búsqueda. Elasticsearch realiza análisis de texto al indexar o buscar campos de texto. Que hemos definido en mapeos. Este es el factor clave para el motor de búsqueda. 
De manera predeterminada, Elasticsearch usa el analizador estándar para todos los análisis de texto. El analizador estándar le brinda soporte listo para usar para la mayoría de los lenguajes naturales y casos de uso. Si elige utilizar el analizador estándar tal como está, no se necesita ninguna configuración adicional. También puede crear su propio analizador personalizado.
 

4. Metodología de búsqueda 

Hay diferentes tipos de consultas que puede aplicar a Elasticsearch. Por eso, obtendrá resultados en consecuencia. Aquí daré un ejemplo básico de una consulta. Consulta más simple, que coincide con todos los documentos. 
 

javascript

// Write Javascript code here
var client = require('./connection.js');
  
client.search({  
  index: 'gov',
  type: 'constituencies',
  body: {
    query: {
      match: { "constituencyname": "Harwich" }
    },
  }
},function (error, response,status) {
    if (error){
      console.log("search error: "+error)
    }
    else {
      console.log("--- Response ---");
      console.log(response);
      console.log("--- Hits ---");
      response.hits.hits.forEach(function(hit){
        console.log(hit);
      })
    }
});
  
  
client.search({  
    index: 'gov',
    type: 'petitions',  
    body: {
      query: {
        match: { 'action': 'Ipswich' }
      },
    },function (error, response,status) {
      if (error){
        console.log("search error: "+error)
      }
      else {
        console.log("--- Response ---");
        console.log(response);
        console.log("--- Hits ---");
        response.hits.hits.forEach(function(hit){
          console.log(hit);
        })
      }
  });

5. Consultas

  • Consultas compuestas: las consultas compuestas envuelven otras consultas compuestas o de hoja, ya sea para combinar sus resultados y puntajes, para cambiar su comportamiento o para cambiar de consulta a contexto de filtro. 
    La consulta predeterminada para combinar varias hojas o cláusulas de consulta compuestas, como cláusulas must, should, must_not o filter. Las cláusulas must y should tienen sus puntajes combinados.
     
  • Consultas de texto completo: las consultas de texto completo le permiten buscar campos de texto analizados, como el cuerpo de un correo electrónico. La string de consulta se procesa con el mismo analizador que se aplicó al campo durante la indexación. Analizará su entrada. Si la entrada dada no es exacta pero aún así, obtendrá un resultado.
     
  • Unión de consultas:   realizar uniones completas de 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. 
    a) consulta anidada 
    b) consultas has_child y has_parent
     
  • Consultas especializadas: este grupo contiene consultas que no encajan en los otros grupos. Se encontró que los documentos que son de naturaleza similar, las consultas ancladas también hay muchas más, consulte su documentación.
     
  • Consultas a nivel de término: puede usar consultas a nivel de término para buscar documentos basados ​​en valores precisos en datos estructurados. Los ejemplos de datos estructurados incluyen rangos de fechas, direcciones IP, precios o ID de productos.
    A diferencia de las consultas de texto completo, las consultas a nivel de término no analizan 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, mientras que en el texto completo primero se analizará y luego buscará, por lo que hay una gran diferencia entre la consulta de nivel de término y la consulta de texto completo.

6. 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 calculan puntuaciones. El contexto de filtro se usa principalmente para filtrar datos estructurados, por ejemplo

  • ¿Esta marca de tiempo se encuentra en el rango de 2015 a 2016? 
  • ¿El campo de estado está configurado como «publicado»?

Elasticsearch almacenará automáticamente en caché los filtros utilizados con frecuencia para acelerar el rendimiento. El contexto de filtro entra en vigor cada vez que se pasa una cláusula de consulta a un parámetro de filtro, como los parámetros filter o must_not en la consulta bool, el parámetro filter en la consulta constant_score o la agregación de filtros. Con la agregación es más como en RDBMS, encontrará Promedio, Suma y mucha información de datos utilizando consultas complejas.

Elastic Stack es una tecnología muy importante para aprender. Aplicará esto en cualquiera de sus proyectos y ELK Stack se usa más comúnmente como una 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.

Publicación traducida automáticamente

Artículo escrito por devanshuvguj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *