Bien qu'il s'agisse d'une petite API, c'est un outil très bénéfique, en particulier pour les développeurs provenant de bases de données SQL. Il peut également réduire la courbe d'apprentissage en reliant rapidement les requêtes SQL aux requêtes de recherche correspondantes.
Vous pouvez ensuite explorer les capacités complètes de l'API de recherche Elasticsearch et des langages de requête pris en charge.
C'est pour garder à l'esprit que bien qu'Elasticsearch prenne en charge SQL, il contient diverses limites.
Syntaxe de requête
Ce qui suit montre la syntaxe de l'API Translate:
Obtenir _sql / traduireVous pouvez également envoyer une demande de poste à l'API Translate comme indiqué dans la syntaxe suivante:
Post _sql / traduireSelon la configuration de votre cluster, l'API peut nécessiter des privilèges de lecture sur l'index dont vous souhaitez interroger les données. Vous pouvez également spécifier la ressource cible comme un alias d'index ou un flux de données.
Dans la request_body, vous pouvez spécifier tous les paramètres du corps de la demande de recherche de recherche SQL de recherche SQL. Explorez les documents fournis dans la ressource suivante pour en savoir plus:
https: // www.élastique.CO / GUIDE / EN / ELASTICSEARCH / RÉFÉRENCE / COURANT / SQL-SEARCH-API.HTML # SQL-SEARCH-API-request-Body
En réponse, la requête doit renvoyer le résultat correspondant à l'API de recherche avec les données interrogées.
Exemple
Pour illustrer au mieux comment utiliser cette API, nous supposerons que nous avons un index appelé "Netflix" contenant toutes les données sur les films et émissions de télévision Netflix.
Supposons que nous souhaitions récupérer les cinq meilleurs films de l'index Netflix que nous avons publié en 2020 et plus:
La requête SQL équivalente peut être exprimée comme indiqué ci-dessous:
Sélectionnez le titre, la durée, la note, le type à partir de Netflix où type = 'film' et release_year> = 2020Pour exécuter la recherche SQL ci-dessus dans Elasticsearch, nous pouvons le mettre dans l'API de recherche SQL comme indiqué ci-dessous:
curl -xget "http: // localhost: 9200 / _sql?format = txt "-h" kbn-xsrf: reporting "-h" contenu-type: application / json "-d 'La demande précédente doit interroger l'index et récupérer les enregistrements correspondants. La sortie de retour est en format texte comme indiqué ci-dessous:
Comme nous pouvons le voir, Elasticsearch renvoie la sortie attendue.
Pour retourner la sortie en tant que JSON, nous pouvons définir le format sur JSON comme indiqué ci-dessous:
curl -xget ""http: // localhost: 9200 / _sql?format = json ""-h"" kbn-xsrf: reporting ""-h"" contenu-type: application / json ""-d 'Sortir:
Convertir la requête SQL en demande de recherche
Pour convertir la requête de recherche SQL précédente en une demande ElasticSearch, nous pouvons la transmettre en API Translate comme indiqué ci-dessous:
curl -xget ""http: // localhost: 9200 / _sql / tradlate"" -h ""kbn-xsrf: reporting"" -h ""contenu-type: application / json"" -d 'L'API doit analyser l'entrée SQL d'entrée et la convertir en une demande de recherche valide, comme indiqué dans la sortie suivante:
Vous pouvez ensuite utiliser ce format de demande pour envoyer à l'API de recherche Elasticsearch comme indiqué ci-dessous:
curl -xpost ""http: // localhost: 9200 / netflix / _search"" -h ""kbn-xsrf: reportage"" -h ""contenu-type: application / json"" -d 'De même, la demande doit renvoyer des données similaires à celles indiquées ci-dessous:
Conclusion
Grâce à cet article, vous avez découvert comment vous pouvez utiliser les requêtes SQL pour récupérer les données d'un index Elasticsearch existant. Vous avez également appris à utiliser l'API SQL Translate pour convertir une requête SQL valide en une demande Elasticsearch.
"