3 puan yazan GN⁺ 2025-04-19 | Henüz yorum yok. | WhatsApp'ta paylaş
  • ES 8.18’e ES|QL LOOKUP JOIN komutu eklendi; böylece veri ilişkilendirme ve zenginleştirme mümkün hale geldi
  • Mevcut ENRICH özelliğine göre kurulumu ve yönetimi daha kolay; veri birleştirme, güvenlik olayı korelasyonu ve varlık bilgisi birleştirme gibi kullanım senaryolarında faydalı
  • JOIN için yeni tasarlanan tek shard tabanlı lookup index modu eklendi — en fazla 2 milyar belge saklanabiliyor
  • LOOKUP JOIN, çoktan çoğa join işlemlerini kolayca işler ve dinamik alan belirtimi ile toplulaştırma işlevleri için de uygundur
  • Kibana veya API üzerinden CSV ile kolayca lookup indeksi oluşturulabiliyor; gelecekte INNER JOIN ve alt sorgu desteği de gelecek

ES|QL’de gerçek JOIN dönemi başladı: LOOKUP JOIN özelliğine giriş

Elasticsearch’te artık SQL tarzı JOIN mümkün

  • Elasticsearch 8.18 itibarıyla ES|QL içinde LOOKUP JOIN destekleniyor
  • Bu, LEFT OUTER JOIN biçiminde çalışıyor ve “sağ” taraftaki veri yeni lookup indeks modu üzerinden yönetiliyor
  • Örnekler:
    • IP adresine göre ortam adı (dev, QA, prod) birleştirme
    • Güvenlik olaylarına çalışan bilgisi, varlık bilgisi, tehdit istihbaratı gibi veriler ekleme
    • Web loglarında yanıt koduna göre ortam analizi yapma

Mevcut ENRICH ile farkları

  • ENRICH yaklaşımı

    • İndeks tabanlı bir politikanın önceden tanımlanması gerekir
    • Veri değiştikçe politikanın yeniden çalıştırılması gerekir
    • Birden fazla eşleşmede çok değerli alan olarak döner, bu da sonradan işlemeyi karmaşıklaştırır
    • Toplulaştırma ve istatistiksel analiz için uygun değildir
    • Statik veri (nadiren değişen referans bilgisi) için uygundur
  • LOOKUP JOIN yaklaşımı

    • Ayrı bir politika olmadan anında kullanılabilir
    • İndeks doğrudan düzenlenebildiği için değişiklikler hemen yansır
    • Birden fazla eşleşmede satır bazında ayrılır, bu da analizi kolaylaştırır
    • Gruplama ve toplulaştırma için optimize edilmiştir (ör. kullanıcı başına toplam trafik)
    • Dinamik ve sık güncellenen veriler için de avantajlıdır

Kullanım örneği

FROM kibana_sample_data_logs   
| WHERE response.keyword != "200"   
| LOOKUP JOIN envs_lkp ON clientip   
| STATS COUNT(*) by response, environment  
  • IP bazlı ortam verisini JOIN ederek HTTP hata oluşum konumlarını analiz etme

  • Takım sahipliği bilgisini de JOIN ederek hangi takımın yönettiği sunucularda sorun olduğunu belirleme mümkün

    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  
    

Lookup indeksi nasıl oluşturulur

  • Kibana UI üzerinden: Stack Management → Index Management → Create index

  • REST API ile:

    PUT mylookupindex  
    {  
      "settings": {  
        "index.mode": "lookup"  
      }  
    }  
    
  • Machine Learning File Upload ile CSV yükledikten sonra indeks oluştururken lookup modu ayarlanabilir

Dikkat edilmesi gerekenler ve ipuçları

  • JOIN ağır bir işlem olduğu için sık kullanılan alanlarda lookup yerine ENRICH + ingest-time denormalization değerlendirilmeli
  • lookup index tek shard’dan oluşur ve en fazla 2 milyar belge sınırı vardır
  • Normal sorgularda olduğu gibi FROM <lookup_index> ile doğrudan sorgulanabilir
  • Logstash veya Elastic Agent üzerinden de veri girişi yapılabilir (ancak data stream değildir)

Yol haritası

  • INNER JOIN, SUBQUERY, genel indeks join’i desteği de planlanıyor
  • Kibana içinde doğrudan lookup indeksi oluşturma ve düzenleme UI’ı da sunulacak
    • Örnek: Discover içinde CSV sürükle-bırak → otomatik indeks oluşturma
    • GUI tabanlı Lookup yönetim özelliği sunulacak (mockup da paylaşıldı)

Özet ve başlangıç

  • LOOKUP JOIN, resmî sürüm öncesi teknik önizleme olsa da ES|QL’i yeni bir seviyeye taşıyabilecek bir özellik
  • Elastic Cloud üzerinde Elasticsearch 8.18 veya 9.0 ile başlanabilir

Henüz yorum yok.

Henüz yorum yok.