Obwohl dies eine kleine API ist, ist es ein sehr vorteilhaftes Instrument, insbesondere für Entwickler aus SQL -Datenbanken. Es kann auch die Lernkurve reduzieren, indem die SQL -Abfragen schnell mit den entsprechenden Suchabfragen in Verbindung gebracht werden.
Sie können dann die vollständigen Funktionen der Elasticsearch -Such -API und der unterstützten Abfragesprachen untersuchen.
Beachten Sie, dass Elasticsearch, obwohl es SQL unterstützt, jedoch verschiedene Einschränkungen enthält.
Abfragesyntax
Das Folgende zeigt die Syntax der Translate -API:
Holen Sie sich _sql/übersetzenSie können auch eine Postanforderung an die übersetzende API senden, wie in der folgenden Syntax gezeigt:
Post _sql/übersetzenAbhängig von Ihrer Clusterkonfiguration erfordert die API möglicherweise Leseberechtigungen für den Index, dessen Daten Sie abfragen möchten. Sie können die Zielressource auch als Index -Alias oder Datenstrom angeben.
Im Request_Body können Sie alle SQL -Such -API -Anforderungskörperparameter angeben. Erkunden Sie die in der folgenden Ressource bereitgestellten Dokumente, um mehr zu erfahren:
https: // www.elastisch.Co/Guide/en/Elasticsearch/Referenz/Strom/SQL-Search-API.HTML#SQL-Search-API-Request-Body
Als Antwort sollte die Abfrage das Ergebnis zurückgeben, das der Such -API mit den abgefragten Daten entspricht.
Beispiel
Um die Verwendung dieser API am besten zu veranschaulichen, gehen wir davon aus, dass wir einen Index namens „Netflix“ haben, der alle Daten zu Netflix -Filmen und TV.
Angenommen, wir möchten die fünf besten Filme aus dem Netflix -Index abholen, den wir im Jahr 2020 und höher veröffentlicht haben:
Die äquivalente SQL -Abfrage kann wie unten gezeigt ausgedrückt werden:
Wählen Sie Titel, Dauer, Bewertung, Typ aus Netflix Wobei Typ = 'Movie' und Release_year> = 2020Um die obige SQL -Suche in Elasticsearch auszuführen, können wir sie wie unten gezeigt in die SQL -Such -API einfügen:
curl -xget "http: // localhost: 9200/_sql?format = txt "-h" kbn -xsrf: meldeing "-h" content -type: application/json "-d 'Die vorherige Anfrage sollte den Index abfragen und die Matching -Datensätze abrufen. Die Rückgabeausgabe erfolgt in Textformat wie unten angegeben:
Wie wir sehen können, gibt Elasticsearch die erwartete Ausgabe zurück.
Um die Ausgabe als JSON zurückzugeben, können wir das Format wie unten gezeigt auf JSON einstellen:
curl -xget "http: // localhost: 9200/_sql?format = json "-h" kbn -xsrf: meldeing "-h" content -type: application/json "-d 'Ausgang:
Konvertieren Sie die SQL -Abfrage in die Suchanforderung
Um die vorherige SQL -Suchabfrage in eine Elasticsearch -Anfrage umzuwandeln, können wir sie wie unten gezeigt in die übersetzende API übergeben:
curl -xget "http: // localhost: 9200/_sql/translate" -h "kbn-xsrf: meldung" -h "content -type: application/json" -d 'Die API sollte die Eingabe -SQL -Eingabe analysieren und in eine gültige Suchanforderung umwandeln, wie in der folgenden Ausgabe gezeigt:
Sie können dann dieses Anforderungsformat verwenden, um an die unten gezeigte Elasticsearch -Such -API zu senden:
curl -xpost "http: // localhost: 9200/netflix/_search" -h "kbn -xsrf: meldung" -h "content -type: application/json" -d 'In ähnlicher Weise sollte die Anforderung ähnliche Daten wie unten gezeigt zurückgeben:
Abschluss
Über diesen Beitrag haben Sie festgestellt, wie Sie SQL -Abfragen verwenden können, um Daten aus einem vorhandenen Elasticsearch -Index abzurufen. Sie haben auch gelernt, wie Sie die SQL -API übersetzen, um eine gültige SQL -Abfrage in eine Elasticsearch -Anforderung umzuwandeln.