¿Estás visitando desde Argentina?
Ingresá a Linware Argentina ⯈
Continuar en Linware Argentina ⯈
×
¿Qué estás buscando?
BUSCAR!
BLOG
Presentación del lenguaje de consulta Elasticsearch (ES|QL)
Publicada el 07/09/2023

Elasticsearch Query Language (ES|QL) está listo para compartirse con el mundo y ha llegado al repositorio de Elasticsearch®. ES|QL es un potente lenguaje declarativo nativo de Elasticsearchy diseñado para brindar capacidad de composición, expresividad y velocidad.

¿Por qué otro idioma?

Elasticsearch admite varios lenguajes, desde el  venerable queryDSL hasta EQL , KQL , SQL , Painless , Canvas/Timelion y otros; a medida que su adopción aumentó, también lo hizo la audiencia y sus necesidades. Ya no se trata sólo de una “búsqueda de texto completo”. Son muchas cosas, como exploración de registros, búsqueda de amenazas, informes, alertas y procesamiento personalizado.

Aquí hay una consulta ES|QL tomada de un conjunto de pruebas que utiliza el conjunto de datos de empleados de muestra de MySQL (con varias modificaciones):

 
  FROM employeesn| EVAL hired_year = TO_INTEGER(DATE_FORMAT(hire_date, "YYYY"))n| WHERE hired_year > 1984n| STATS avg_salary = AVG(salary) BY languagesn| EVAL avg_salary = ROUND(avg_salary)n| EVAL lang_code = TO_STRING(languages)n| ENRICH languages_policy ON lang_code WITH lang = language_namen| WHERE lang IS NOT NULLn| KEEP avg_salary, langn| SORT avg_salary ASCn| LIMIT 3
1984n| STATS avg_salary = AVG(salary) BY languagesn| EVAL avg_salary = ROUND(avg_salary)n| EVAL lang_code = TO_STRING(languages)n| ENRICH languages_policy ON lang_code WITH lang = language_namen| WHERE lang IS NOT NULLn| KEEP avg_salary, langn| SORT avg_salary ASCn| LIMIT 3">
Eso devuelve una respuesta similar a:
 
{n  "columns": [n    {"name": "avg_salary", "type": "double"},n    {"name": "lang",       "type": "keyword"}n  ],n  "rows": [n    ["43760.0", "Spanish"],n    ["48644.0", "French"],n    ["48832.0", "German"]n  ]n}
 
Una única consulta ES|QL realiza filtrado, procesamiento, agrupación, cambio de nombre, clasificación, búsquedas y poda de columnas. 

La consulta fluye de arriba a abajo, al igual que los datos. Se puede encadenar una cantidad arbitraria de comandos según sea necesario, reordenarlos y utilizar las funciones integradas o sus propias evaluaciones. ES|QL ofrece una experiencia de consulta unificada que es más fácil y potente que las interfaces de consulta existentes, que seguirán estando disponibles.

 

Motor de consultas dedicado

ES|QL no es solo un lenguaje, sino también un motor de cálculo y consulta especializado y completo para Elasticsearch. No hay traducción ni transpilación a QueryDSL: todas las consultas ES|QL se procesan, analizan, resuelven y analizan semánticamente, y se verifican y optimizan, seguido de una fase de planificación para la ejecución distribuida con los datos del clúster. Los nodos de destino designados son responsables de la ejecución local y explotan las características de los datos locales realizando su propia replanificación local utilizando la infraestructura ES|QL.

ES|QL trae un nuevo motor de ejecución diseñado teniendo en cuenta el rendimiento: uno que opera en bloques a la vez en lugar de por fila, apunta a la vectorización y la localidad de caché, y adopta la especialización y los subprocesos múltiples. Es un componente separado del marco de agregación de Elasticsearch existente con diferentes características de rendimiento. En nuestros puntos de referencia actuales , hay mejoras significativas en varias agregaciones (cuanto más pequeño, mejor).

El objetivo es proporcionar diferentes capacidades, como realizar múltiples agrupaciones encadenadas:

 
POST /_query?format=txtn{n "query" : """n  FROM employeesn| STATS c = COUNT(emp_no) BY languagesn| STATS most_speakers_of_a_lang = MAX(c)n """n}
 
most_speakers_of_a_langn-----------------------n21
 
 

¿Dónde puedo conseguirlo?

El código ES|QL está disponible en la rama principal de Elasticsearch y se lanzará como una vista previa técnica en Elasticsearch. Es una función de nivel gratuito y está disponible para todos. Las instantáneas nocturnas estarán disponibles para descargar en breve, así que no dudes en consultar el código y compilarlo tú mismo. Pruebe ES|QL y comience a explorar sus datos locales: lea los documentos aquí .

El lanzamiento y el momento de cualquier característica o funcionalidad descrita en esta publicación quedan a discreción exclusiva de Elastic. Es posible que cualquier característica o funcionalidad que no esté disponible actualmente no se entregue a tiempo o no se entregue en absoluto.

Ir al Blog