- 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 indexmode जोड़ा गया है — इसमें अधिकतम 2 अरब documents तक स्टोर किए जा सकते हैं LOOKUP JOINmany-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 नए
lookupindex 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 बनाते समय
lookupmode सेट किया जा सकता है
सावधानियाँ और टिप्स
- JOIN एक heavy operation है, इसलिए जो fields बार-बार इस्तेमाल होती हैं उनके लिए
lookupकी जगह ENRICH + ingest-time denormalization पर विचार करें lookup indexsingle 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 के साथ शुरुआत की जा सकती है
अभी कोई टिप्पणी नहीं है.