Elasticsearch SQL Translate API

Elasticsearch Sql Translate Api



இந்த இடுகையில், JSON அடிப்படையிலான முழு வினவல் டொமைன் குறிப்பிட்ட மொழியைக் கொண்ட சரியான எலாஸ்டிக் தேடல் API கோரிக்கையாக SQL தேடலை எவ்வாறு மொழிபெயர்ப்பது என்பதைக் கற்றுக்கொள்வோம்.

இது ஒரு சிறிய API என்றாலும், இது மிகவும் பயனுள்ள கருவியாகும், குறிப்பாக SQL தரவுத்தளங்களிலிருந்து வரும் டெவலப்பர்களுக்கு. இது SQL வினவல்களை தொடர்புடைய தேடல் வினவல்களுடன் விரைவாக தொடர்புபடுத்துவதன் மூலம் கற்றல் வளைவைக் குறைக்கலாம்.

நீங்கள் Elasticsearch தேடல் API மற்றும் ஆதரிக்கப்படும் வினவல் மொழிகளின் முழு திறன்களையும் ஆராயலாம்.







Elasticsearch SQL ஐ ஆதரிக்கிறது என்றாலும், அது பல்வேறு வரம்புகளைக் கொண்டுள்ளது என்பதை நினைவில் கொள்ள வேண்டும்.



வினவல் தொடரியல்

பின்வரும் மொழிபெயர்ப்பு API இன் தொடரியல் காட்டுகிறது:



GET _sql/translate

{

கோரிக்கை_உடல்

}

பின்வரும் தொடரியலில் காட்டப்பட்டுள்ளபடி மொழிபெயர்ப்பு API க்கு இடுகை கோரிக்கையையும் அனுப்பலாம்:





POST _sql/translate

{

கோரிக்கை_உடல்

}

உங்கள் கிளஸ்டர் உள்ளமைவைப் பொறுத்து, நீங்கள் வினவ விரும்பும் தரவின் குறியீட்டில் API க்கு வாசிப்புச் சலுகைகள் தேவைப்படலாம். நீங்கள் இலக்கு வளத்தை குறியீட்டு மாற்றுப்பெயர் அல்லது தரவு ஸ்ட்ரீம் எனவும் குறிப்பிடலாம்.

request_body இல், நீங்கள் அனைத்து SQL தேடல் API கோரிக்கை உடல் அளவுருக்களையும் குறிப்பிடலாம். மேலும் அறிய பின்வரும் ஆதாரத்தில் வழங்கப்பட்டுள்ள ஆவணங்களை ஆராயவும்:



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

மறுமொழியாக, வினவப்பட்ட தரவுகளுடன் தேடல் API உடன் தொடர்புடைய முடிவை வினவல் வழங்க வேண்டும்.

உதாரணமாக

இந்த API ஐ எவ்வாறு பயன்படுத்துவது என்பதை சிறப்பாக விளக்குவதற்கு, Netflix திரைப்படங்கள் மற்றும் தொலைக்காட்சி நிகழ்ச்சிகள் பற்றிய அனைத்துத் தரவையும் கொண்ட “netflix” எனப்படும் ஒரு அட்டவணை எங்களிடம் இருப்பதாகக் கருதுவோம்.

2020 மற்றும் அதற்கு மேல் நாங்கள் வெளியிட்ட நெட்ஃபிக்ஸ் குறியீட்டிலிருந்து முதல் ஐந்து திரைப்படங்களைப் பெற விரும்புகிறோம் என்று வைத்துக்கொள்வோம்:

சமமான SQL வினவலை கீழே காட்டப்பட்டுள்ளபடி வெளிப்படுத்தலாம்:

தலைப்பு, கால அளவு, மதிப்பீடு, நெட்ஃபிக்ஸ் இலிருந்து வகையைத் தேர்ந்தெடுக்கவும். WHERE வகை = 'திரைப்படம்' மற்றும் வெளியீடு_ஆண்டு >= 2020

மேலே உள்ள SQL தேடலை Elasticsearch இல் செயல்படுத்த, கீழே காட்டப்பட்டுள்ளபடி SQL தேடல் API இல் வைக்கலாம்:

சுருட்டை -XGET “http://localhost:9200/_sql?format=txt” -எச் 'kbn-xsrf: அறிக்கையிடல்' -எச் 'உள்ளடக்க வகை: பயன்பாடு/json' -d '

{

'வினவல்': ' \n தலைப்பு, கால அளவு, மதிப்பீடு, 'நெட்ஃபிக்ஸ்' இலிருந்து வகையைத் தேர்ந்தெடுக்கவும் எங்கே வகை = '
\\ '' திரைப்படம் ' \' ' மற்றும் வெளியீடு_ஆண்டு >= 2020 \n ',

'
பெற_அளவு ': 5

}'

முந்தைய கோரிக்கையானது குறியீட்டை வினவ வேண்டும் மற்றும் பொருத்தமான பதிவுகளைப் பெற வேண்டும். கீழே வழங்கப்பட்டுள்ளபடி திரும்ப வெளியீடு உரை வடிவத்தில் உள்ளது:

நாம் பார்க்க முடியும் என, Elasticsearch எதிர்பார்த்த வெளியீட்டை வழங்குகிறது.

வெளியீட்டை JSON ஆக மாற்ற, கீழே காட்டப்பட்டுள்ளபடி வடிவமைப்பை JSONக்கு அமைக்கலாம்:

சுருட்டை -XGET 'http://localhost:9200/_sql?format=json' -எச் 'kbn-xsrf: அறிக்கையிடல்' -எச் 'உள்ளடக்க வகை: பயன்பாடு/json' -d '

{

'வினவல்': ' \n தலைப்பு, கால அளவு, மதிப்பீடு, 'நெட்ஃபிக்ஸ்' இலிருந்து வகையைத் தேர்ந்தெடுக்கவும் எங்கே வகை = '
\\ '' திரைப்படம் ' \' ' மற்றும் வெளியீடு_ஆண்டு >= 2020 \n ',

'
பெற_அளவு ': 5

}'

வெளியீடு:

SQL வினவலை தேடல் கோரிக்கையாக மாற்றவும்

முந்தைய SQL தேடல் வினவலை எலாஸ்டிக் தேடல் கோரிக்கையாக மாற்ற, கீழே காட்டப்பட்டுள்ளபடி அதை மொழிபெயர்ப்பு APIக்கு அனுப்பலாம்:

சுருட்டை -XGET 'http://localhost:9200/_sql/translate' -எச் 'kbn-xsrf: அறிக்கையிடல்' -எச் 'உள்ளடக்க வகை: பயன்பாடு/json' -d '

{

'வினவல்': ' \n தலைப்பு, கால அளவு, மதிப்பீடு, 'நெட்ஃபிக்ஸ்' இலிருந்து வகையைத் தேர்ந்தெடுக்கவும் எங்கே வகை = '
\\ '' திரைப்படம் ' \' ' மற்றும் வெளியீடு_ஆண்டு >= 2020 \n ',

'
பெற_அளவு ': 5

}'

பின்வரும் வெளியீட்டில் காட்டப்பட்டுள்ளபடி, API உள்ளீடு SQL உள்ளீட்டைப் பாகுபடுத்தி, சரியான தேடல் கோரிக்கையாக மாற்ற வேண்டும்:

{
'அளவு' : 5 ,
'கேள்வி' : {
'பூல்' : {
'கட்டாயம்' : [
{
'காலம்' : {
'வகை' : {
'மதிப்பு' : 'திரைப்படம்'
}
}
},
{
'சரகம்' : {
'வெளியீட்டு_ஆண்டு' : {
'ஜிடிஇ' : 2020 ,
'உயர்வு' : 1
}
}
}
],
'உயர்வு' : 1
}
},
'_source' : பொய்,
'வயல்கள்' : [
{
'வயல்' : 'தலைப்பு'
},
{
'வயல்' : 'காலம்'
},
{
'வயல்' : 'மதிப்பீடு'
},
{
'வயல்' : 'வகை'
}
],
'வகைபடுத்து' : [
{
'_டாக்' : {
'ஆணை' : 'asc'
}
}
]
}

கீழே காட்டப்பட்டுள்ளபடி Elasticsearch தேடல் API க்கு அனுப்ப இந்தக் கோரிக்கை வடிவமைப்பைப் பயன்படுத்தலாம்:

சுருட்டை -XPOST 'http://localhost:9200/netflix/_search' -எச் 'kbn-xsrf: அறிக்கையிடல்' -எச் 'உள்ளடக்க வகை: பயன்பாடு/json' -d '
{
'அளவு': 5,
'கேள்வி': {
'பூல்': {
'கட்டாயம்': [
{
'காலம்': {
'வகை': {
'மதிப்பு': 'திரைப்படம்'
}
}
},
{
'சரகம்': {
'release_year': {
'gte': 2020,
'பூஸ்ட்': 1
}
}
}
],
'பூஸ்ட்': 1
}
},
'_source': பொய்,
'புலங்கள்': [
{
'புலம்': 'தலைப்பு'
},
{
'புலம்': 'காலம்'
},
{
'புலம்': 'மதிப்பீடு'
},
{
'புலம்': 'வகை'
}
],
'வகைபடுத்து': [
{
'_doc': {
'ஆர்டர்': 'ஏஎஸ்சி'
}
}
]
}'

இதேபோல், கோரிக்கையானது கீழே காட்டப்பட்டுள்ள அதே தரவை வழங்க வேண்டும்:

முடிவுரை

இந்த இடுகையின் மூலம், ஏற்கனவே உள்ள எலாஸ்டிக் தேடல் குறியீட்டிலிருந்து தரவைப் பெற SQL வினவல்களை எவ்வாறு பயன்படுத்தலாம் என்பதைக் கண்டுபிடித்தீர்கள். செல்லுபடியாகும் SQL வினவலை எலாஸ்டிக் தேடல் கோரிக்கையாக மாற்றுவதற்கு SQL API மொழிபெயர்ப்பை எவ்வாறு பயன்படுத்துவது என்பதையும் நீங்கள் கற்றுக்கொண்டீர்கள்.