• ES 8.18 में ES|QL का LOOKUP JOIN कमांड जोड़ा गया है, जिससे data correlation और enrichment संभव हो गया है
  • मौजूदा ENRICH फीचर की तुलना में इसका setup और management आसान है, और यह data join, security event correlation analysis, asset information merging जैसे कामों में उपयोगी है
  • JOIN के लिए नए सिरे से डिज़ाइन किया गया single-shard आधारित lookup index mode जोड़ा गया है — इसमें अधिकतम 2 अरब documents तक स्टोर किए जा सकते हैं
  • LOOKUP JOIN many-to-many join को आसानी से संभालता है, और dynamic field specification तथा aggregation के लिए भी उपयुक्त है
  • Kibana या API के ज़रिए CSV से आसानी से lookup index बनाया जा सकता है, और आगे चलकर INNER JOIN तथा subquery फीचर भी आने वाले हैं

ES|QL में अब सचमुच JOIN आ गया: LOOKUP JOIN फीचर का परिचय

अब Elasticsearch में भी SQL-style JOIN संभव

  • Elasticsearch 8.18 से ES|QL में LOOKUP JOIN का सपोर्ट उपलब्ध है
  • यह LEFT OUTER JOIN फ़ॉर्मेट है, और “दाईं ओर” का data नए lookup index mode के ज़रिए मैनेज किया जाता है
  • उदाहरण:
    • IP address के आधार पर environment name (dev, QA, prod) मर्ज करना
    • security events में employee information, asset information, threat intelligence आदि जोड़ना
    • web logs में response code के आधार पर environment analysis करना

मौजूदा ENRICH से अंतर

  • ENRICH तरीका

    • index-आधारित policy पहले से सेट करनी पड़ती है
    • data बदलने पर हर बार policy फिर से चलानी पड़ती है
    • multiple matches होने पर multi-value field के रूप में return होता है, जिससे post-processing जटिल हो जाती है
    • aggregation और statistical analysis के लिए उपयुक्त नहीं
    • static data (ऐसी reference information जिसमें बदलाव बहुत कम होते हैं) के लिए उपयुक्त
  • LOOKUP JOIN तरीका

    • अलग policy के बिना तुरंत उपयोग किया जा सकता है
    • index को सीधे modify किया जा सकता है, इसलिए changes तुरंत reflect होते हैं
    • multiple matches होने पर rows में अलग-अलग विभाजित हो जाता है, जिससे analysis आसान होता है
    • grouping और aggregation के लिए optimize किया गया है (उदाहरण: user के हिसाब से traffic total)
    • dynamic और बार-बार update होने वाले data के लिए भी फायदेमंद

उपयोग उदाहरण

FROM kibana_sample_data_logs   
| WHERE response.keyword != "200"   
| LOOKUP JOIN envs_lkp ON clientip   
| STATS COUNT(*) by response, environment  
  • IP के अनुसार environment data को JOIN करके HTTP error होने की location का analysis

  • team ownership information को भी JOIN करके यह पता लगाया जा सकता है कि किस team द्वारा managed server में समस्या है

    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 index बनाने का तरीका

  • Kibana UI से: Stack Management → Index Management → Create index

  • REST API से:

    PUT mylookupindex  
    {  
      "settings": {  
        "index.mode": "lookup"  
      }  
    }  
    
  • Machine Learning File Upload के माध्यम से CSV upload करने के बाद index बनाते समय lookup mode सेट किया जा सकता है

सावधानियाँ और टिप्स

  • JOIN एक heavy operation है, इसलिए जो fields बार-बार इस्तेमाल होती हैं उनके लिए lookup की जगह ENRICH + ingest-time denormalization पर विचार करें
  • lookup index single shard से बना होता है, और अधिकतम 2 अरब documents की सीमा है
  • सामान्य query की तरह FROM <lookup_index> से सीधे query भी की जा सकती है
  • Logstash या Elastic Agent के ज़रिए भी data ingest किया जा सकता है (लेकिन data stream नहीं है)

आगे की योजना

  • INNER JOIN, SUBQUERY, सामान्य index join का सपोर्ट भी आगे आने वाला है
  • Kibana के भीतर सीधे lookup index create और modify करने के लिए UI भी दिया जाएगा
    • उदाहरण: Discover में CSV drag-and-drop → automatic index creation
    • GUI-आधारित Lookup management फीचर भी आने वाला है (mockup भी दिखाया गया है)

सारांश और शुरुआत

  • LOOKUP JOIN अभी official release से पहले technical preview में है, लेकिन यह ES|QL को एक नए स्तर पर ले जाने वाली सुविधा है
  • Elastic Cloud पर Elasticsearch 8.18 या 9.0 के साथ शुरुआत की जा सकती है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.