Elasticsearch SQL Translate API

Elasticsearch Sql Translate Api



اس پوسٹ میں، ہم سیکھیں گے کہ کس طرح ایس کیو ایل سرچ کا ایک درست Elasticsearch سرچ API درخواست میں ترجمہ کرنا ہے جس میں JSON کی بنیاد پر مکمل Query Domain Specific Language شامل ہے۔

اگرچہ یہ ایک چھوٹا API ہے، لیکن یہ ایک بہت فائدہ مند ٹول ہے، خاص طور پر SQL ڈیٹا بیس سے آنے والے ڈویلپرز کے لیے۔ یہ ایس کیو ایل کے سوالات کو متعلقہ تلاش کے سوالات سے جلدی سے منسلک کرکے سیکھنے کے منحنی خطوط کو بھی کم کر سکتا ہے۔

اس کے بعد آپ Elasticsearch سرچ API اور تعاون یافتہ استفسار کی زبانوں کی مکمل صلاحیتوں کو تلاش کر سکتے ہیں۔







یہ ذہن میں رکھنے کی بات ہے کہ اگرچہ Elasticsearch SQL کو سپورٹ کرتا ہے، لیکن اس میں مختلف حدود موجود ہیں۔



استفسار نحو

مندرجہ ذیل ترجمہ API کا نحو دکھاتا ہے:



_sql/translate حاصل کریں۔

{

درخواست_باڈی

}

آپ ترجمہ API کو پوسٹ کی درخواست بھی بھیج سکتے ہیں جیسا کہ درج ذیل نحو میں دکھایا گیا ہے۔





POST _sql/ ترجمہ

{

درخواست_باڈی

}

آپ کے کلسٹر کنفیگریشن پر منحصر ہے، API کو انڈیکس پر پڑھنے کے مراعات کی ضرورت پڑ سکتی ہے جس کے ڈیٹا سے آپ استفسار کرنا چاہتے ہیں۔ آپ ٹارگٹ ریسورس کو انڈیکس عرف یا ڈیٹا سٹریم کے طور پر بھی بتا سکتے ہیں۔

request_body میں، آپ SQL Search API کی درخواست کے تمام پیرامیٹرز بتا سکتے ہیں۔ مزید جاننے کے لیے درج ذیل وسائل میں فراہم کردہ دستاویزات کو دریافت کریں:



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

جواب کے طور پر، استفسار کو مطلوبہ ڈیٹا کے ساتھ سرچ API کے مطابق نتیجہ واپس کرنا چاہیے۔

مثال

اس API کو کس طرح استعمال کرنا ہے اس کی بہترین وضاحت کرنے کے لیے، ہم فرض کریں گے کہ ہمارے پاس 'netflix' نامی ایک انڈیکس ہے جس میں Netflix فلموں اور TV شوز کے بارے میں تمام ڈیٹا موجود ہے۔

فرض کریں کہ ہم نیٹ فلکس انڈیکس سے ٹاپ پانچ فلمیں لانا چاہتے ہیں جنہیں ہم نے سال 2020 اور اس سے اوپر میں ریلیز کیا تھا:

مساوی SQL استفسار کا اظہار کیا جا سکتا ہے جیسا کہ ذیل میں دکھایا گیا ہے:

ٹائٹل، دورانیہ، درجہ بندی، نیٹ فلکس سے ٹائپ کریں WHERE type = 'فلم' اور ریلیز_سال >= 2020

Elasticsearch میں مندرجہ بالا SQL تلاش کو انجام دینے کے لیے، ہم اسے SQL Search API میں ڈال سکتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے:

curl -XGET 'http://localhost:9200/_sql?format=txt' -ایچ 'kbn-xsrf: رپورٹنگ' -ایچ 'مواد کی قسم: درخواست/json' -d '

{

'query': ' \n عنوان، مدت، درجہ بندی، 'netflix' سے ٹائپ کریں WHERE type = '
\ '' فلم ' \' ' اور ریلیز_سال >= 2020 \n

'
fetch_size ': 5

}'

پچھلی درخواست میں انڈیکس سے استفسار کرنا چاہیے اور مماثل ریکارڈز کو لانا چاہیے۔ ریٹرن آؤٹ پٹ ٹیکسٹ فارمیٹ میں ہے جیسا کہ ذیل میں دیا گیا ہے:

جیسا کہ ہم دیکھ سکتے ہیں، Elasticsearch متوقع آؤٹ پٹ واپس کرتا ہے۔

آؤٹ پٹ کو JSON کے طور پر واپس کرنے کے لیے، ہم JSON پر فارمیٹ سیٹ کر سکتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے:

curl -XGET 'http://localhost:9200/_sql?format=json' -ایچ 'kbn-xsrf: رپورٹنگ' -ایچ 'مواد کی قسم: درخواست/json' -d '

{

'query': ' \n عنوان، مدت، درجہ بندی، 'netflix' سے ٹائپ کریں WHERE type = '
\ '' فلم ' \' ' اور ریلیز_سال >= 2020 \n

'
fetch_size ': 5

}'

آؤٹ پٹ:

ایس کیو ایل سوال کو تلاش کی درخواست میں تبدیل کریں۔

سابقہ ​​ایس کیو ایل تلاش کے استفسار کو Elasticsearch درخواست میں تبدیل کرنے کے لیے، ہم اسے ترجمہ API میں منتقل کر سکتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے:

curl -XGET 'http://localhost:9200/_sql/translate' -ایچ 'kbn-xsrf: رپورٹنگ' -ایچ 'مواد کی قسم: درخواست/json' -d '

{

'query': ' \n عنوان، مدت، درجہ بندی، 'netflix' سے ٹائپ کریں WHERE type = '
\ '' فلم ' \' ' اور ریلیز_سال >= 2020 \n

'
fetch_size ': 5

}'

API کو ان پٹ SQL ان پٹ کو پارس کرنا چاہیے اور اسے ایک درست تلاش کی درخواست میں تبدیل کرنا چاہیے، جیسا کہ درج ذیل آؤٹ پٹ میں دکھایا گیا ہے:

{
'سائز' : 5 ,
'استفسار' : {
'بول' : {
'ضروری' : [
{
'اصطلاح' : {
'قسم' : {
'قدر' : 'فلم'
}
}

{
'حد' : {
'ریلیز_سال' : {
'جی ٹی ای' : 2020 ,
'فروغ' : 1
}
}
}

'فروغ' : 1
}

'_ذریعہ' : جھوٹا
'کھیتوں' : [
{
'میدان' : 'عنوان'

{
'میدان' : 'مدت'

{
'میدان' : 'درجہ بندی'

{
'میدان' : 'قسم'
}

'ترتیب دیں' : [
{
'_دستاویز' : {
'ترتیب' : 'ASC'
}
}
]
}

پھر آپ اس درخواست کی شکل کو Elasticsearch سرچ API کو بھیجنے کے لیے استعمال کر سکتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے:

curl -XPOST 'http://localhost:9200/netflix/_search' -ایچ 'kbn-xsrf: رپورٹنگ' -ایچ 'مواد کی قسم: درخواست/json' -d '
{
'سائز': 5،
'استفسار': {
'بول': {
'لازمی': [
{
'اصطلاح': {
'قسم': {
'value': 'فلم'
}
}

{
'حد': {
'ریلیز_سال': {
'جی ٹی ای': 2020،
'بوسٹ': 1
}
}
}

'بوسٹ': 1
}

'_ذریعہ': غلط،
'کھیتوں': [
{
'field': 'عنوان'

{
'field': 'مدت'

{
'field': 'درجہ بندی'

{
'field': 'قسم'
}

'ترتیب دیں': [
{
'_doc': {
'order': 'asc'
}
}
]
}'

اسی طرح، درخواست کو اسی طرح کا ڈیٹا واپس کرنا چاہیے جیسا کہ ذیل میں دکھایا گیا ہے:

نتیجہ

اس پوسٹ کے ذریعے، آپ نے دریافت کیا کہ آپ موجودہ Elasticsearch انڈیکس سے ڈیٹا حاصل کرنے کے لیے SQL استفسارات کا استعمال کیسے کر سکتے ہیں۔ آپ نے یہ بھی سیکھا کہ ایک درست SQL استفسار کو Elasticsearch کی درخواست میں تبدیل کرنے کے لیے Translate SQL API کا استعمال کیسے کریں۔