- ES 8.18’e ES|QL
LOOKUP JOINkomutu 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 indexmodu 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 JOINdestekleniyor - Bu, LEFT OUTER JOIN biçiminde çalışıyor ve “sağ” taraftaki veri yeni
lookupindeks 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
- IP adresine göre ortam adı (
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 JOINyaklaşı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
lookupmodu ayarlanabilir
Dikkat edilmesi gerekenler ve ipuçları
- JOIN ağır bir işlem olduğu için sık kullanılan alanlarda
lookupyerine ENRICH + ingest-time denormalization değerlendirilmeli lookup indextek 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.