Sebbene questa sia una piccola API, è uno strumento molto benefico, specialmente per gli sviluppatori provenienti da database SQL. Può anche ridurre la curva di apprendimento mettendo in relazione rapidamente le query SQL alle corrispondenti query di ricerca.
È quindi possibile esplorare le capacità complete dell'API di ricerca di Elasticsearch e delle lingue di query supportate.
È per tenere presente che sebbene Elasticsearch supporti SQL, contiene varie limitazioni.
Sintassi delle query
Di seguito mostra la sintassi dell'API Translate:
Ottieni _sql/traduciÈ inoltre possibile inviare una richiesta post all'API Translate come mostrato nella sintassi seguente:
Post _SQL/TranslateA seconda della configurazione del cluster, l'API può richiedere privilegi di lettura sull'indice i cui dati si desidera fare query. È inoltre possibile specificare la risorsa target come alias indice o un flusso di dati.
In Request_body, è possibile specificare tutti i parametri del corpo della richiesta di ricerca di ricerca SQL. Esplora i documenti forniti nella seguente risorsa per saperne di più:
https: // www.elastico.CO/GUIDA/EN/ELASTICHEARCH/REFERIMENTO/Current/SQL-SEARCH-API.HTML#SQL-SEARCH-API-REQUEST-BODY
Come risposta, la query dovrebbe restituire il risultato corrispondente all'API di ricerca con i dati interrogati.
Esempio
Per illustrare al meglio come utilizzare questa API, supponiamo che abbiamo un indice chiamato "Netflix" contenente tutti i dati sui film e sui programmi TV Netflix.
Supponiamo di voler recuperare i primi cinque film dall'indice Netflix che abbiamo pubblicato nell'anno 2020 e oltre:
La query SQL equivalente può essere espressa come mostrato di seguito:
Seleziona titolo, durata, valutazione, tipo da netflix dove type = 'film' e rilascio_year> = 2020Per eseguire la ricerca SQL sopra in Elasticsearch, possiamo inserirla nell'API di ricerca SQL come mostrato di seguito:
Curl -Xget "http: // localhost: 9200/_sql?formato = txt "-h" kbn -xsrf: reporting "-h" contenuto -tipo: applicazione/json "-d 'La richiesta precedente dovrebbe interrogare l'indice e recuperare i record corrispondenti. L'output di restituzione è in formato di testo come previsto di seguito:
Come possiamo vedere, Elasticsearch restituisce l'output previsto.
Per restituire l'output come JSON, possiamo impostare il formato su JSON come mostrato di seguito:
Curl -Xget ""http: // localhost: 9200/_sql?formato = json ""-h"" kbn -xsrf: reporting ""-h"" tipo di contenuto: applicazione/json ""-d 'Produzione:
Converti la query SQL in richiesta di ricerca
Per convertire la precedente query di ricerca SQL in una richiesta di ElasticSearch, possiamo passarla nell'API Translate come mostrato di seguito:
Curl -xget ""http: // localhost: 9200/_sql/tradute"" -H ""kbn -xsrf: reporting"" -h ""contenuti -type: applicazione/json"" -d 'L'API dovrebbe analizzare l'ingresso di input SQL e convertirlo in una richiesta di ricerca valida, come mostrato nella seguente uscita:
È quindi possibile utilizzare questo formato di richiesta per inviare all'API di ricerca di Elasticsearch come mostrato di seguito:
Curl -xpost ""http: // localhost: 9200/netflix/_search"" -h ""kbn -xsrf: reporting"" -h ""contenuti -type: applicazione/json"" -d 'Allo stesso modo, la richiesta dovrebbe restituire dati simili come mostrato di seguito:
Conclusione
Attraverso questo post, hai scoperto come è possibile utilizzare query SQL per recuperare i dati da un indice ElaSticSearch esistente. Hai anche imparato a utilizzare l'API SQL traduci per convertire una query SQL valida in una richiesta di ElaSticSearch.
"