3 Punkte von GN⁺ 2025-04-19 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Mit ES 8.18 wird der ES|QL-Befehl LOOKUP JOIN eingeführt, der Datenkorrelation und -anreicherung ermöglicht
  • Im Vergleich zur bisherigen ENRICH-Funktion ist die Einrichtung und Verwaltung einfacher und nützlich für Daten-Joins, die Korrelationsanalyse von Sicherheitsereignissen und das Zusammenführen von Asset-Informationen
  • Für JOINs wurde neu der auf Single-Shard basierende Modus „lookup index“ entwickelt — er kann bis zu 2 Milliarden Dokumente speichern
  • LOOKUP JOIN verarbeitet Many-to-Many-Joins einfach und eignet sich auch für dynamische Feldangaben sowie Aggregationsfunktionen
  • Über Kibana oder die API lassen sich lookup-Indizes einfach aus CSV erstellen; künftig sind auch INNER JOINs und Subqueries geplant

ES|QL hat jetzt einen echten JOIN: Einführung in LOOKUP JOIN

Jetzt sind auch in Elasticsearch SQL-ähnliche JOINs möglich

  • Seit Elasticsearch 8.18 unterstützt ES|QL LOOKUP JOIN
  • Dabei handelt es sich um eine LEFT OUTER JOIN-Form, wobei die „rechte“ Datenseite über den neuen lookup-Indexmodus verwaltet wird
  • Beispiele:
    • Umgebungsnamen (dev, QA, prod) anhand von IP-Adressen zusammenführen
    • Sicherheitsereignisse um Mitarbeiterinformationen, Asset-Daten, Threat Intelligence usw. ergänzen
    • In Weblogs Umgebungen nach Response-Code analysieren

Unterschiede zu ENRICH

  • ENRICH-Ansatz

    • Eine indexbasierte Policy muss vorab konfiguriert werden
    • Bei Datenänderungen muss die Policy jedes Mal erneut ausgeführt werden
    • Bei Mehrfachtreffern erfolgt die Rückgabe als mehrwertiges Feld, was die Nachbearbeitung komplex macht
    • Für Aggregationen und statistische Analysen ungeeignet
    • Geeignet für statische Daten (Referenzinformationen, die sich kaum ändern)
  • LOOKUP JOIN-Ansatz

    • Sofort ohne separate Policy nutzbar
    • Der Index kann direkt geändert werden, sodass Änderungen sofort wirksam werden
    • Bei Mehrfachtreffern werden die Ergebnisse zeilenweise getrennt, was die Analyse erleichtert
    • Für Gruppierung und Aggregation optimiert (z. B. gesamte Traffic-Summe pro Benutzer)
    • Auch für dynamische und häufig aktualisierte Daten vorteilhaft

Anwendungsbeispiele

FROM kibana_sample_data_logs   
| WHERE response.keyword != "200"   
| LOOKUP JOIN envs_lkp ON clientip   
| STATS COUNT(*) by response, environment  
  • Durch JOIN der Umgebungsdaten pro IP lässt sich analysieren, wo HTTP-Fehler auftreten

  • Durch zusätzliches JOINen von Team-Zuordnungen lässt sich erkennen, auf Servern welchen Teams Probleme auftreten

    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  
    

So erstellt man einen Lookup-Index

  • Über die Kibana-Oberfläche: Stack Management → Index Management → Create index

  • Über die REST API:

    PUT mylookupindex  
    {  
      "settings": {  
        "index.mode": "lookup"  
      }  
    }  
    
  • Nach dem Hochladen einer CSV über den Machine-Learning-File-Upload kann beim Erstellen des Index der Modus lookup gesetzt werden

Hinweise und Tipps

  • JOINs sind rechenintensive Operationen; für häufig verwendete Felder sollte statt lookup eher ENRICH + ingest-time denormalization erwogen werden
  • Der lookup index besteht aus einem Single Shard und hat ein Limit von maximal 2 Milliarden Dokumenten
  • Er kann wie eine normale Abfrage auch direkt über FROM <lookup_index> abgefragt werden
  • Die Dateneingabe ist auch über Logstash oder Elastic Agent möglich (allerdings nicht als Data Stream)

Ausblick

  • INNER JOIN, SUBQUERY und JOINs auf reguläre Indizes sind ebenfalls geplant
  • In Kibana soll es künftig direkt eine UI zum Erstellen und Bearbeiten von lookup-Indizes geben
    • Beispiel: CSV per Drag-and-Drop in Discover → automatische Index-Erstellung
    • Eine GUI-basierte Verwaltung für Lookups ist geplant (ein Mockup wurde bereits veröffentlicht)

Zusammenfassung und Einstieg

  • LOOKUP JOIN ist zwar noch eine Technical Preview vor dem offiziellen Release, kann ES|QL aber auf ein neues Niveau heben
  • Der Einstieg ist in Elastic Cloud mit Elasticsearch 8.18 oder 9.0 möglich

Noch keine Kommentare.

Noch keine Kommentare.