Chociaż jest to mały interfejs API, jest to bardzo korzystne narzędzie, szczególnie dla programistów pochodzących z baz danych SQL. Może również zmniejszyć krzywą uczenia się, szybko powiązać zapytania SQL z odpowiednimi zapytaczami wyszukiwania.
Następnie możesz zbadać pełne możliwości interfejsu API wyszukiwania ElasticSearch i obsługiwanych języków zapytań.
Należy pamiętać, że chociaż Elasticsearch obsługuje SQL, zawiera różne ograniczenia.
Składnia zapytania
Poniżej pokazuje składnię interfejsu API tłumaczenia:
Uzyskaj _sql/przetłumaczMożesz także wysłać żądanie pocztów do interfejsu API Tłumacz, jak pokazano w poniższej składni:
Post _SQL/TłumaczW zależności od konfiguracji klastra interfejs API może wymagać uprawnień odczytu w indeksie, których dane chcesz zapytać. Możesz także określić zasób docelowy jako alias indeksowy lub strumień danych.
W COBDE request_body możesz określić wszystkie parametry ciała Wyszukaj SQL Wyszukaj. Przeglądaj dokumenty przedstawione w poniższym zasobach, aby dowiedzieć się więcej:
https: // www.elastyczny.co/przewodnik/en/elasticsearch/reference/current/sql-search-api.HTML#SQL-SEARCH-API-REQUEST-BODY
W odpowiedzi zapytanie powinno zwrócić wynik odpowiadający interfejsowi API wyszukiwania z pytaniami danych.
Przykład
Aby najlepiej zilustrować, jak korzystać z tego interfejsu API, założymy, że mamy indeks o nazwie „Netflix” zawierający wszystkie dane o filmach i programach telewizyjnych Netflix.
Załóżmy, że chcemy pobrać pięć najlepszych filmów z indeksu Netflix, który wydaliśmy w roku 2020 i powyżej:
Równoważne zapytanie SQL można wyrazić, jak pokazano poniżej:
Wybierz tytuł, czas trwania, ocena, typ z Netflix gdzie type = „film” i wydanie_year> = 2020Aby wykonać powyższe wyszukiwanie SQL w ElasticSearch, możemy umieścić je w interfejsie API wyszukiwania SQL, jak pokazano poniżej:
curl -xget "http: // localhost: 9200/_sql?format = txt "-h" kbn -xsrf: raportowanie "-h" content -type: application/json "-d 'Poprzednie żądanie powinno zapytać o indeks i pobrać dopasowane rekordy. Wyjście zwrotne jest w formacie tekstowym, jak podano poniżej:
Jak widzimy, ElasticSearch zwraca oczekiwane wyniki.
Aby zwrócić dane wyjściowe jako JSON, możemy ustawić format na JSON, jak pokazano poniżej:
curl -xget ""http: // localhost: 9200/_sql?format = json ""-h"" kbn -xsrf: raportowanie ""-h"" content -type: application/json ""-d 'Wyjście:
Konwertuj zapytanie SQL na żądanie wyszukiwania
Aby przekonwertować poprzednie zapytanie SQL w żądanie ElasticSearch, możemy przekazać je do interfejsu API Tłumacz, jak pokazano poniżej:
curl -xget ""http: // localhost: 9200/_sql/tłumacz"" -h ""kbn -xsrf: raportowanie"" -h ""content -typ: application/json"" -d 'API powinien przeanalizować wejście SQL i przekonwertować go na prawidłowe żądanie wyszukiwania, jak pokazano na następnym wyjściu:
Następnie możesz użyć tego formatu żądania, aby wysłać do interfejsu API wyszukiwania ElasticSearch, jak pokazano poniżej:
curl -xpost ""http: // localhost: 9200/netflix/_search"" -h ""kbn -xsrf: raportowanie"" -h ""content -typ: application/json"" -d 'Podobnie żądanie powinno zwrócić podobne dane, jak pokazano poniżej:
Wniosek
Za pośrednictwem tego postu odkryłeś, w jaki sposób możesz użyć zapytań SQL do pobierania danych z istniejącego indeksu ElasticSearch. Nauczyłeś się także, jak używać tłumaczenia API SQL do konwersji prawidłowego zapytania SQL na żądanie ElasticSearch.
"