इलास्टिक्स खोज SQL अनुवाद API

Ilastiksa Khoja Sql Anuvada Api



इस पोस्ट में, हम सीखेंगे कि SQL खोज को JSON पर आधारित पूर्ण क्वेरी डोमेन विशिष्ट भाषा वाले एक मान्य Elasticsearch खोज API अनुरोध में कैसे अनुवादित किया जाए।

हालांकि यह एक छोटा एपीआई है, यह एक बहुत ही फायदेमंद टूल है, खासकर SQL डेटाबेस से आने वाले डेवलपर्स के लिए। यह SQL क्वेरी को संबंधित खोज क्वेरी से शीघ्रता से संबंधित करके सीखने की अवस्था को कम कर सकता है।

फिर आप इलास्टिक्स खोज खोज एपीआई और समर्थित क्वेरी भाषाओं की पूरी क्षमताओं का पता लगा सकते हैं।







यह ध्यान में रखना है कि यद्यपि Elasticsearch SQL का समर्थन करता है, इसमें विभिन्न सीमाएँ शामिल हैं।



क्वेरी सिंटैक्स

निम्नलिखित अनुवाद API का सिंटैक्स दिखाता है:



_sql/अनुवाद प्राप्त करें

{

अनुरोध_बॉडी

}

आप अनुवाद API को एक पोस्ट अनुरोध भी भेज सकते हैं जैसा कि निम्नलिखित सिंटैक्स में दिखाया गया है:





पोस्ट _एसक्यूएल/अनुवाद

{

अनुरोध_बॉडी

}

आपके क्लस्टर कॉन्फ़िगरेशन के आधार पर, एपीआई को उस इंडेक्स पर पढ़ने के विशेषाधिकार की आवश्यकता हो सकती है जिसका डेटा आप क्वेरी करना चाहते हैं। आप लक्ष्य संसाधन को इंडेक्स उपनाम या डेटा स्ट्रीम के रूप में भी निर्दिष्ट कर सकते हैं।

request_body में, आप सभी SQL खोज API अनुरोध बॉडी पैरामीटर निर्दिष्ट कर सकते हैं। अधिक जानने के लिए निम्नलिखित संसाधन में प्रदान किए गए दस्तावेज़ों का अन्वेषण करें:



https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-search-api.html#sql-search-api-request-body

प्रतिक्रिया के रूप में, क्वेरी को क्वेरी किए गए डेटा के साथ खोज API के अनुरूप परिणाम लौटाना चाहिए।

उदाहरण

इस एपीआई का उपयोग करने का सबसे अच्छा वर्णन करने के लिए, हम मान लेंगे कि हमारे पास 'नेटफ्लिक्स' नामक एक इंडेक्स है जिसमें नेटफ्लिक्स फिल्मों और टीवी शो के बारे में सभी डेटा शामिल हैं।

मान लीजिए कि हम नेटफ्लिक्स इंडेक्स से शीर्ष पांच फिल्में प्राप्त करना चाहते हैं, जिसे हमने वर्ष 2020 और उससे अधिक में रिलीज़ किया था:

समतुल्य SQL क्वेरी को नीचे दिखाए अनुसार व्यक्त किया जा सकता है:

शीर्षक, अवधि, रेटिंग चुनें, नेटफ्लिक्स से टाइप करें जहां टाइप करें = 'चलचित्र' और रिलीज_वर्ष >= 2020

Elasticsearch में उपरोक्त SQL खोज को निष्पादित करने के लिए, हम इसे नीचे दिखाए अनुसार SQL खोज API में डाल सकते हैं:

कर्ल -XGET 'http://localhost:9200/_sql?format=txt' -एच 'केबीएन-एक्सएसआरएफ: रिपोर्टिंग' -एच 'सामग्री-प्रकार: एप्लिकेशन/जेसन' -डी '

{

'सवाल': ' \एन शीर्षक, अवधि, रेटिंग चुनें, 'नेटफ्लिक्स' से टाइप करें जहां टाइप = '
\ '' चलचित्र ' \' ' और रिलीज_वर्ष >= 2020 \एन ',

'
फ़ेच_साइज़ ': 5

}'

पिछले अनुरोध को अनुक्रमणिका से पूछताछ करनी चाहिए और मिलान रिकॉर्ड प्राप्त करना चाहिए। रिटर्न आउटपुट टेक्स्ट फॉर्मेट में है जैसा कि नीचे दिया गया है:

जैसा कि हम देख सकते हैं, Elasticsearch अपेक्षित आउटपुट देता है।

आउटपुट को JSON के रूप में वापस करने के लिए, हम नीचे दिखाए गए अनुसार JSON को प्रारूप सेट कर सकते हैं:

कर्ल -XGET 'http://localhost:9200/_sql?format=json' -एच 'केबीएन-एक्सएसआरएफ: रिपोर्टिंग' -एच 'सामग्री-प्रकार: एप्लिकेशन/जेसन' -डी '

{

'सवाल': ' \एन शीर्षक, अवधि, रेटिंग चुनें, 'नेटफ्लिक्स' से टाइप करें जहां टाइप = '
\ '' चलचित्र ' \' ' और रिलीज_वर्ष >= 2020 \एन ',

'
फ़ेच_साइज़ ': 5

}'

आउटपुट:

SQL क्वेरी को खोज अनुरोध में बदलें

पिछली SQL खोज क्वेरी को Elasticsearch अनुरोध में बदलने के लिए, हम इसे अनुवाद API में पास कर सकते हैं जैसा कि नीचे दिखाया गया है:

कर्ल -XGET 'http://localhost:9200/_sql/translate' -एच 'केबीएन-एक्सएसआरएफ: रिपोर्टिंग' -एच 'सामग्री-प्रकार: एप्लिकेशन/जेसन' -डी '

{

'सवाल': ' \एन शीर्षक, अवधि, रेटिंग चुनें, 'नेटफ्लिक्स' से टाइप करें जहां टाइप = '
\ '' चलचित्र ' \' ' और रिलीज_वर्ष >= 2020 \एन ',

'
फ़ेच_साइज़ ': 5

}'

एपीआई को इनपुट एसक्यूएल इनपुट को पार्स करना चाहिए और इसे एक वैध खोज अनुरोध में परिवर्तित करना चाहिए, जैसा कि निम्नलिखित आउटपुट में दिखाया गया है:

{
'आकार' : 5 ,
'सवाल' : {
'बूल' : {
'ज़रूरी' : [
{
'शर्त' : {
'प्रकार' : {
'मूल्य' : 'चलचित्र'
}
}
},
{
'सीमा' : {
'रिहाई का वर्ष' : {
'जीटीई' : 2020 ,
'बढ़ावा' : 1
}
}
}
],
'बढ़ावा' : 1
}
},
'_स्रोत' : असत्य,
'खेत' : [
{
'खेत' : 'शीर्षक'
},
{
'खेत' : 'अवधि'
},
{
'खेत' : 'रेटिंग'
},
{
'खेत' : 'प्रकार'
}
],
'क्रम से लगाना' : [
{
'_doc' : {
'गण' : 'एएससी'
}
}
]
}

फिर आप नीचे दिखाए गए अनुसार इलास्टिक्स खोज एपीआई को भेजने के लिए इस अनुरोध प्रारूप का उपयोग कर सकते हैं:

कर्ल -XPOST 'http://localhost:9200/netflix/_search' -एच 'केबीएन-एक्सएसआरएफ: रिपोर्टिंग' -एच 'सामग्री-प्रकार: एप्लिकेशन/जेसन' -डी '
{
'आकार': 5,
'सवाल': {
'बूल': {
'ज़रूरी': [
{
'शर्त': {
'प्रकार': {
'मूल्य': 'मूवी'
}
}
},
{
'सीमा': {
'रिहाई का वर्ष': {
'जीटीई': 2020,
'बूस्ट': 1
}
}
}
],
'बूस्ट': 1
}
},
'_स्रोत': झूठा,
'खेत': [
{
'फ़ील्ड': 'शीर्षक'
},
{
'फ़ील्ड': 'अवधि'
},
{
'फ़ील्ड': 'रेटिंग'
},
{
'क्षेत्र के जैसा'
}
],
'क्रम से लगाना': [
{
'_doc': {
'आदेश': 'एएससी'
}
}
]
}'

इसी तरह, अनुरोध को नीचे दिखाए गए समान डेटा वापस करना चाहिए:

निष्कर्ष

इस पोस्ट के माध्यम से, आपने पाया कि आप मौजूदा इलास्टिक्स खोज इंडेक्स से डेटा प्राप्त करने के लिए SQL क्वेरी का उपयोग कैसे कर सकते हैं। आपने यह भी सीखा कि किसी मान्य SQL क्वेरी को Elasticsearch अनुरोध में बदलने के लिए अनुवाद SQL API का उपयोग कैसे करें।