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
{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}
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.