Vaikka tämä on pieni API, se on erittäin hyödyllinen työkalu erityisesti SQL-tietokannoista tuleville kehittäjille. Se voi myös vähentää oppimiskäyrää liittämällä SQL-kyselyt nopeasti vastaaviin hakukyselyihin.
Tämän jälkeen voit tutkia Elasticsearch-hakusovellusliittymän kaikkia ominaisuuksia ja tuettuja kyselykieliä.
On pidettävä mielessä, että vaikka Elasticsearch tukee SQL:ää, se sisältää useita rajoituksia.
Kyselyn syntaksi
Seuraavassa näkyy käännössovellusliittymän syntaksi:
HANKI _sql/translate
{
request_body
}
Voit myös lähettää lähetyspyynnön käännössovellusliittymälle seuraavan syntaksin mukaisesti:
POST _sql/translate
{
request_body
}
Riippuen klusterikokoonpanosta, API voi vaatia lukuoikeuksia indeksiltä, jonka tiedoista haluat kyselyn. Voit myös määrittää kohderesurssin hakemistoaliakseksi tai tietovirraksi.
Kohdassa request_body voit määrittää kaikki SQL Search API -pyynnön runkoparametrit. Saat lisätietoja tutustumalla seuraavassa resurssissa oleviin asiakirjoihin:
Vastauksena kyselyn tulee palauttaa hakusovellusliittymää vastaava tulos kyselyn tiedoilla.
Esimerkki
Havainnollistaaksemme tämän sovellusliittymän käyttöä, oletamme, että meillä on hakemisto nimeltä 'netflix', joka sisältää kaikki tiedot Netflix-elokuvista ja TV-ohjelmista.
Oletetaan, että haluamme hakea viisi parasta elokuvaa Netflix-indeksistä, jotka julkaisimme vuonna 2020 ja sitä vanhempana:
Vastaava SQL-kysely voidaan ilmaista seuraavasti:
SELECT otsikko, kesto, luokitus, tyyppi FROM Netflix WHERE tyyppi = 'Elokuva' JA julkaisuvuosi >= 2020Suorittaaksesi yllä olevan SQL-haun Elasticsearchissa, voimme laittaa sen SQL Search API:hen alla olevan kuvan mukaisesti:
curl -XGET 'http://localhost:9200/_sql?format=txt' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d '{
'kysely': ' \n SELECT otsikko, kesto, arvosana, tyyppi FROM 'netflix' WHERE type = ' \ '' Elokuva ' \' ' JA julkaisuvuosi >= 2020 \n ',
' hae_size ': 5
}'
Edellisen pyynnön tulee tehdä kysely hakemistosta ja hakea vastaavat tietueet. Palautustulos on tekstimuodossa alla olevan mukaisesti:
Kuten näemme, Elasticsearch palauttaa odotetun tulosteen.
Jos haluat palauttaa lähdön JSON-muodossa, voimme asettaa muodon JSONiksi alla olevan kuvan mukaisesti:
curl -XGET 'http://localhost:9200/_sql?format=json' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d '{
'kysely': ' \n SELECT otsikko, kesto, arvosana, tyyppi FROM 'netflix' WHERE type = ' \ '' Elokuva ' \' ' JA julkaisuvuosi >= 2020 \n ',
' hae_size ': 5
}'
Lähtö:
Muunna SQL-kysely hakupyynnöksi
Muuntaaksesi edellisen SQL-hakukyselyn Elasticsearch-pyynnöksi voimme välittää sen käännössovellusliittymään alla olevan kuvan mukaisesti:
curl -XGET 'http://localhost:9200/_sql/translate' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d '{
'kysely': ' \n SELECT otsikko, kesto, arvosana, tyyppi FROM 'netflix' WHERE type = ' \ '' Elokuva ' \' ' JA julkaisuvuosi >= 2020 \n ',
' hae_size ': 5
}'
API:n tulee jäsentää syötetty SQL-syöte ja muuntaa se kelvolliseksi hakupyynnöksi seuraavan lähdön mukaisesti:
{'koko' : 5 ,
'kysely' : {
'bool' : {
'on pakko' : [
{
'termi' : {
'tyyppi' : {
'arvo' : 'Elokuva'
}
}
},
{
'alue' : {
'julkaisuvuosi' : {
'gte' : 2020 ,
'vahvistus' : 1
}
}
}
],
'vahvistus' : 1
}
},
'_lähde' : väärä,
'pellot' : [
{
'ala' : 'titteli'
},
{
'ala' : 'kesto'
},
{
'ala' : 'luokitus'
},
{
'ala' : 'tyyppi'
}
],
'järjestellä' : [
{
'_doc' : {
'Tilaus' : 'nouseva'
}
}
]
}
Voit sitten käyttää tätä pyyntömuotoa lähettääksesi Elasticsearch-hakusovellusliittymään alla olevan kuvan mukaisesti:
curl -XPOST 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d '{
'koko': 5,
'kysely': {
'bool': {
'on pakko': [
{
'termi': {
'tyyppi': {
'value': 'Elokuva'
}
}
},
{
'alue': {
'julkaisuvuosi': {
'gte': 2020,
'vahvistus': 1
}
}
}
],
'vahvistus': 1
}
},
'_source': false,
'kentät': [
{
'field': 'otsikko'
},
{
'field': 'kesto'
},
{
'field': 'luokitus'
},
{
'field': 'tyyppi'
}
],
'lajitella': [
{
'_doc': {
'tilaus': 'nouseva'
}
}
]
}'
Samoin pyynnön pitäisi palauttaa samanlaiset tiedot, kuten alla on esitetty:
Johtopäätös
Tämän viestin kautta huomasit, kuinka voit käyttää SQL-kyselyitä tietojen hakemiseen olemassa olevasta Elasticsearch-hakemistosta. Opit myös käyttämään SQL-kääntämissovellusliittymää kelvollisen SQL-kyselyn muuntamiseen Elasticsearch-pyynnöksi.