Aunque esta es una API pequeña, es una herramienta muy beneficiosa, especialmente para los desarrolladores que provienen de bases de datos SQL. También puede reducir la curva de aprendizaje relacionando rápidamente las consultas SQL con las consultas de búsqueda correspondientes.
Luego puede explorar las capacidades completas de la API de búsqueda de ElasticSearch y los idiomas de consulta compatibles.
Es a tener en cuenta que, aunque ElasticSearch admite SQL, contiene varias limitaciones.
Sintaxis de consulta
Lo siguiente muestra la sintaxis de la API de traducción:
Obtener _sql/traducirTambién puede enviar una solicitud de publicación a la API de traducción como se muestra en la siguiente sintaxis:
Publicar _sql/traducirDependiendo de la configuración de su clúster, la API puede requerir privilegios de lectura en el índice cuyos datos desea consultar. También puede especificar el recurso de destino como un alias de índice o un flujo de datos.
En el request_body, puede especificar todos los parámetros del cuerpo de solicitud de API de búsqueda SQL. Explore los documentos proporcionados en el siguiente recurso para obtener más información:
https: // www.elástico.CO/Guía/EN/ElasticSearch/Reference/Current/SQL-Search-API.HTML#SQL-Search-API-Request-Body
Como respuesta, la consulta debe devolver el resultado correspondiente a la API de búsqueda con los datos consultados.
Ejemplo
Para ilustrar mejor cómo usar esta API, asumiremos que tenemos un índice llamado "Netflix" que contiene todos los datos sobre películas y programas de televisión de Netflix.
Supongamos que deseamos obtener las cinco mejores películas del índice de Netflix que lanzamos en el año 2020 y superior:
La consulta SQL equivalente se puede expresar como se muestra a continuación:
Seleccione Título, Duración, Clasificación, Escriba desde Netflix donde tipo = 'Movie' y Release_Year> = 2020Para ejecutar la búsqueda SQL anterior en ElasticSearch, podemos ponerla en la API de búsqueda SQL como se muestra a continuación:
curl -xget "http: // localhost: 9200/_sql?formato = txt "-h" kbn -xsrf: informes "-h" tipo de contenido: aplicación/json "-d 'La solicitud anterior debe consultar el índice y obtener los registros coincidentes. La salida de retorno está en formato de texto como se proporciona a continuación:
Como podemos ver, Elasticsearch devuelve la salida esperada.
Para devolver la salida como JSON, podemos establecer el formato en JSON como se muestra a continuación:
curl -xget ""http: // localhost: 9200/_sql?formato = JSON ""-H"" KBN -XSRF: Informe ""-h"" Tipo de contenido: Application/JSON ""-D 'Producción:
Convertir la consulta SQL en solicitud de búsqueda
Para convertir la consulta de búsqueda SQL anterior en una solicitud de ElasticSearch, podemos pasarla a la API de traducción como se muestra a continuación:
curl -xget ""http: // localhost: 9200/_sql/traducir"" -h ""kbn -xsrf: informes"" -h ""tipo de contenido: aplicación/json"" -d 'La API debe analizar la entrada SQL de entrada y convertirla en una solicitud de búsqueda válida, como se muestra en la siguiente salida:
Luego puede usar este formato de solicitud para enviar a la API de búsqueda de ElasticSearch como se muestra a continuación:
curl -xpost ""http: // localhost: 9200/netflix/_search"" -h ""kbn -xsrf: informes"" -h ""de contenido: aplicación/json"" -d 'Del mismo modo, la solicitud debe devolver datos similares como se muestra a continuación:
Conclusión
A través de esta publicación, descubrió cómo podría usar consultas SQL para obtener datos de un índice de Elasticsearch existente. También aprendió cómo usar la API SQL Translate para convertir una consulta SQL válida en una solicitud de ElasticSearch.
"