3 puntos por GN⁺ 2025-04-19 | Aún no hay comentarios. | Compartir por WhatsApp
  • En ES 8.18 se incorporó el comando LOOKUP JOIN de ES|QL, lo que permite correlacionar y enriquecer datos
  • Es más fácil de configurar y administrar que la función ENRICH existente, y resulta útil para joins de datos, análisis de correlación de eventos de seguridad y combinación de información de activos
  • Se introdujo el nuevo modo lookup index, diseñado específicamente para JOIN y basado en un solo shard; puede almacenar hasta 2 mil millones de documentos
  • LOOKUP JOIN maneja fácilmente joins de muchos a muchos y también es adecuado para especificación dinámica de campos y agregaciones
  • A través de Kibana o la API, se pueden crear fácilmente índices lookup a partir de CSV, y más adelante también llegarán INNER JOIN y subconsultas

ES|QL ya tiene un JOIN de verdad: presentación de LOOKUP JOIN

Ahora también se puede hacer JOIN estilo SQL en Elasticsearch

  • Desde Elasticsearch 8.18, ES|QL admite LOOKUP JOIN
  • Tiene formato LEFT OUTER JOIN, y los datos del “lado derecho” se administran mediante el nuevo modo de índice lookup
  • Ejemplos:
    • Combinar el nombre del entorno (dev, QA, prod) según la dirección IP
    • Agregar a eventos de seguridad información de empleados, activos, inteligencia de amenazas, etc.
    • Analizar entornos por código de respuesta en logs web

Diferencias con ENRICH

  • Método ENRICH

    • Es necesario configurar previamente una política basada en índices
    • Cada vez que los datos cambian, hay que volver a ejecutar la política
    • En caso de múltiples coincidencias, devuelve campos multivalor, lo que complica el posprocesamiento
    • No es adecuado para agregaciones ni análisis estadístico
    • Es apropiado para datos estáticos (información de referencia que casi no cambia)
  • Método LOOKUP JOIN

    • Se puede usar de inmediato sin políticas adicionales
    • Como el índice puede modificarse directamente, los cambios se reflejan de inmediato
    • Con múltiples coincidencias, se separa por filas, lo que facilita el análisis
    • Está optimizado para agrupación y agregaciones (por ejemplo, suma de tráfico por usuario)
    • También es ventajoso para datos dinámicos y que se actualizan con frecuencia

Ejemplo de uso

FROM kibana_sample_data_logs   
| WHERE response.keyword != "200"   
| LOOKUP JOIN envs_lkp ON clientip   
| STATS COUNT(*) by response, environment  
  • Hacer JOIN con datos de entorno por IP para analizar dónde ocurren errores HTTP

  • También se puede hacer JOIN con información de propiedad del equipo para identificar en qué servidores administrados por qué equipo hay problemas

    FROM kibana_sample_data_logs   
    | WHERE response.keyword != "200"   
    | LOOKUP JOIN teams_lkp ON host   
    | STATS num = COUNT(*) by host, response.keyword, team   
    | SORT num DESC  
    

Cómo crear un índice lookup

  • Desde la interfaz de Kibana: Stack Management → Index Management → Create index

  • Con la REST API:

    PUT mylookupindex  
    {  
      "settings": {  
        "index.mode": "lookup"  
      }  
    }  
    
  • Al subir un CSV mediante File Upload de machine learning, también se puede establecer el modo lookup al crear el índice

Consideraciones y consejos

  • Como JOIN es una operación pesada, para campos de uso frecuente conviene considerar ENRICH + ingest-time denormalization en lugar de lookup
  • El lookup index está compuesto por un solo shard y tiene un límite máximo de 2 mil millones de documentos
  • También puede consultarse directamente como una consulta normal con FROM <lookup_index>
  • También se pueden ingresar datos mediante Logstash o Elastic Agent (pero no como data stream)

Planes a futuro

  • También está previsto el soporte para INNER JOIN, SUBQUERY y joins con índices normales
  • También está previsto ofrecer en Kibana una interfaz para crear y editar índices lookup directamente
    • Ejemplo: arrastrar y soltar un CSV en Discover → creación automática del índice
    • También está prevista una función de administración de Lookup basada en GUI (ya se publicó un mockup)

Resumen y cómo empezar

  • LOOKUP JOIN es un technical preview antes del lanzamiento oficial, pero puede llevar ES|QL a un nuevo nivel
  • Se puede comenzar con Elasticsearch 8.18 o 9.0 en Elastic Cloud

Aún no hay comentarios.

Aún no hay comentarios.