<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Tyler Perkins - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Tyler Perkins - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/es/search-labs/author/tyler-perkins</link>
    </image>
    <link>https://www.elastic.co/es/search-labs/author/tyler-perkins</link>
    <atom:link href="https://www.elastic.co/es/search-labs/rss/author/tyler-perkins.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[es]]></language>
    <lastBuildDate>Fri, 18 Sep 2026 22:38:47 GMT</lastBuildDate>
  <item>
    <title><![CDATA[ES|QL en la versión 9.2: incorporación de la búsqueda inteligente (Lookup Joins) y compatibilidad con series temporales]]></title>
    <description><![CDATA[Explora tres actualizaciones separadas de ES|QL en Elasticsearch 9.2: un LOOKUP JOIN mejorado para una correlación de datos más expresiva, el nuevo comando TS para análisis de series temporales y el comando flexible INLINE STATS para la agregación.]]></description>
    <content:encoded><![CDATA[<p>Elasticsearch 9.2, lanzado en octubre, está repleto de avances significativos que hacen que el análisis de tus datos sea más rápido, más flexible y más accesible que nunca. En el corazón de esta versión se encuentran importantes mejoras a ES|QL, nuestro lenguaje de búsqueda canalizado, diseñado para brindar aún más valor directamente a los usuarios finales.</p><p>A continuación, se muestran las características de Elasticsearch 9.2 que transformarán tus flujos de trabajo de análisis de datos con ES|QL.</p><h2>Revolucionando la correlación de datos: Lookup Join más inteligente, rápido y flexible</h2><p>El comando <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/lookup-join">LOOKUP JOIN</a> en ES|QL experimentó una transformación significativa en Elasticsearch 9.2, y se volvió mucho más eficiente y versátil. Lookup JOIN combina datos de la tabla de resultados de búsquedas ES|QL con registros coincidentes de un índice de modo de consulta especificado. Agrega campos del índice de búsqueda como nuevas columnas a la tabla de resultados en función de los valores coincidentes en el campo de combinación. Anteriormente, la unión de datos se limitaba a un solo campo y a una igualdad simple. ¡Ya no! Estas mejoras te permiten abordar escenarios complejos de correlación de datos con facilidad.</p><p><strong>Las mejoras clave de Lookup Join incluyen:</strong></p><ul><li><p><strong>Uniones de múltiples campos:</strong> únete fácilmente a varios campos. Por ejemplo, para unir <code>application_logs</code> con <code>service_registry</code> en <code>service_name</code>, <code>environment</code> y <code>version:</code></p></li></ul>FROM application_logs
| LOOKUP JOIN service_registry ON service_name, environment, version<ul><li><p><strong>Utilización de predicados de unión complejos con expresiones (vista previa técnica):</strong></p></li></ul><p>Ya no estás limitado a la igualdad simple. LOOKUP JOIN ahora permite especificar <strong>múltiples criterios</strong> de correlación e incorporar una variedad de <strong>operadores binarios,</strong> como ==, !=, &lt;, &gt;, &lt;= y &gt;=. Esto significa que puedes crear condiciones de unión muy matizadas, lo que te permite plantear preguntas mucho más complejas sobre tus datos.</p><p>Ejemplo 1: Búsqueda de métricas de aplicaciones con umbrales de SLA por servicio</p>FROM application_metrics
| LOOKUP JOIN sla_thresholds
      ON service_name == sla_service AND response_time &gt; sla_response_time<p>Ejemplo 2: Esta búsqueda calcula el monto adeudado, basado en políticas de precios regionales que cambian con el tiempo. Une tres sets de datos basados en condiciones complejas de rango de fechas e igualdad para calcular un <code>due_amount</code> final. La segunda unión de búsqueda utiliza el campo <code>measurement_date</code> del índice de <code>meter_readings</code> y el campo <code>region_id</code> del índice de <code>customers</code> para unirse al índice de <code>pricing_policies</code> y encontrar la política de precios correcta según la <code>region</code> y la <code>measurement_date</code>particular.</p>FROM meter_readings
| LOOKUP JOIN customers
      ON meter_id
| LOOKUP JOIN pricing_policies
      ON
        region_id == region AND
          measurement_date &gt;= policy_begin_date AND
          measurement_date &lt; policy_end_date
| EVAL due_amount = (kwh_consumed * rate_per_kwh + base_charge) * (1 + tax_rate)
| EVAL period = policy_name
| KEEP customer_name, period, due_amount, measurement_date, kwh_consumed,
    rate_per_kwh, base_charge, tax_rate
| SORT measurement_date<ul><li><p><strong>Grandes ganancias de rendimiento para uniones filtradas: </strong></p></li></ul><p>Hemos mejorado el rendimiento de las "uniones en expansión" que se filtran al utilizar condiciones de tabla de búsqueda. Las uniones expansivas producen múltiples coincidencias por fila de entrada, lo que puede generar grandes conjuntos de resultados intermedios. Esto empeora cuando muchas de esas filas se descartan mediante un filtro posterior. En la versión 9.2, optimizamos estas uniones al filtrar las filas innecesarias cuando se aplica un filtro a los datos de búsqueda, lo que evita procesar filas que se descartarían. ¡En algunos casos, estas uniones pueden ser hasta <strong>1000 veces más rápidas</strong>!</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltce2c948a9a00a348/6a17f1a20b0bed8c08dd368b/002c014ee29b1aaf9ddeb8c554bb76efe3ed180c-1572x954.png" alt="Mejoras en el rendimiento de las uniones filtradas" /><p>Esta optimización es crucial cuando se trata de "uniones en expansión", en las que una búsqueda podría generar inicialmente muchas coincidencias potenciales. Al aplicar filtros de forma inteligente, solo se procesan los datos relevantes, lo que reduce drásticamente el tiempo de ejecución de las consultas y permite realizar análisis en tiempo real en sets de datos masivos. Esto significa que obtienes tu información mucho más rápido, incluso con operaciones de unión muy grandes o complejas.</p><p><strong>Compatibilidad de la búsqueda de agrupación con Cross-Cluster Search (CCS):</strong></p><p>Cuando Lookup Join se lanzó al mercado en las versiones 8.19 y 9.1, carecía de compatibilidad con Cross-Cluster Search (CCS). Para organizaciones que operan en múltiples agrupaciones, LOOKUP JOIN ahora se integra perfectamente con CCS en la versión 9.2. Simplemente coloca tu índice de búsqueda en todos los clústeres remotos donde desees realizar una unión, y ES|QL aprovechará automáticamente estos índices de búsqueda para unirse a sus datos remotos. Esto simplifica el análisis distribuido de datos y garantiza un enriquecimiento consistente en todo el despliegue de Elasticsearch.</p><p>Estas mejoras permiten correlacionar diversos conjuntos de datos con una precisión, velocidad y facilidad sin precedentes, lo que permite obtener información más profunda y útil sin necesidad de soluciones alternativas complejas ni pasos de preprocesamiento.</p><h2>Enriquece tus datos con facilidad: Kibana Discover UX para índices de búsqueda</h2><p>El enriquecimiento de datos debe ser sencillo, no un obstáculo. Introdujimos una experiencia de usuario fantástica en Discover de Kibana para crear y gestionar índices de búsqueda.</p><p><strong>Flujo de trabajo intuitivo:</strong> el autocompletado integral de Discover te guiará a través del proceso y te sugerirá índices de búsqueda y campos de unión en el editor ES|QL, lo que hace que sea increíblemente fácil conectar tus datos de monitoreo del tiempo de actividad con índices existentes. Escribe el nombre de un índice de búsqueda que no exista y obtén acceso directo al editor de búsqueda con un clic para crear el índice. Escribe el nombre de un índice de búsqueda existente y te sugeriremos una opción para editarlo:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt20a75bcfd25eb156/6a17f1a46864a4864db688a1/d36fd6ffd6bc0bf8d31067f6266445c68d15c71c-1400x184.png" alt="" /><p><strong>Gestión en línea (CRUD):</strong> mantén actualizados tus sets de datos de referencia con las funciones de edición en línea (crear, leer, actualizar, eliminar) directamente en Discover.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6263c5dd8c2c9d7e/6a17f1a5af47b614dbcde095/a0e4aa66540b1f725c24ccb0519d978415073bb6-1453x842.png" alt="Ejemplo de una consulta LOOKUP" /><p><strong>Carga de archivos sin esfuerzo: </strong>ahora puedes subir archivos directamente, como CSVs, dentro de Discover y usarlos instantáneamente en <code>LOOKUP JOIN</code>. ¡Ya no es necesario cambiar de contexto al saltar de un área a otra de Kibana!</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltddfcc3580af0e5c6/6a17f1a73e9e45965aba1587/0f5dc2c712af4c4cada50292a7c8b836eb02aa67-1600x748.png" alt="Agrega fácilmente datos a un índice de búsqueda y úsalos en LOOKUP JOINs" /><p>Ya sea que estés usando mapping de IDs de usuario a nombres, agregando metadatos empresariales o uniendo archivos de referencia estáticos, esta característica democratiza el enriquecimiento de datos, lo que pone el poder de las uniones directamente en manos de cada usuario de forma rápida, sencilla y en un solo lugar.</p><h2>Preserva tu contexto: presentación de INLINE STATS (versión preliminar de tecnología)</h2><p>La agregación de datos es crucial, pero a veces necesitas ver los agregados <em>junto a</em> tus datos originales. Nos complace presentar <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/inlinestats-by">INLINE STATS</a> como una <strong>característica de vista previa técnica</strong>.</p><p>A diferencia del comando <code>STATS</code>, que reemplaza tus campos de entrada por una salida agregada, <code>INLINE STATS</code> conserva todos tus campos de entrada originales y simplemente agrega los nuevos campos agregados. Esto te permite realizar más operaciones en tus campos de entrada originales <em>después</em> de la agregación, lo que genera un flujo de trabajo de análisis más continuo y flexible.</p><p>Por ejemplo, para calcular la distancia promedio de vuelo mientras se mantienen las filas de vuelo individuales:</p>FROM kibana_sample_data_flights
 | KEEP Carrier, Dest, DistanceMiles
 | INLINE STATS avgDist = ROUND(AVG(DistanceMiles))
       BY Dest
 | WHERE DistanceMiles &gt; avgDist<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9e0c7209db8a67ad/6a17f1a9e8fbcee5233a1a53/6eea943035e0ab371270084c504a06bb89f8b82b-1496x290.png" alt="Filtrar resultados de vuelos con una distancia mayor que el promedio mediante avgDist " /><p>En esta consulta, se agrega <code>avgDist</code> a cada fila con el <code>Dest</code>correspondiente (ination) por el que agrupamos y, como aún tenemos las columnas de información de vuelo, podemos filtrar los resultados a los vuelos con una distancia mayor que la media.</p><h2>Compatibilidad con series temporales en ES|QL (vista previa técnica)</h2><p>Elasticsearch usa <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/time-series-data-stream-tsds">flujos de datos temporales</a> para almacenar métricas. Estamos agregando soporte para agregaciones de series temporales en ES|QL, a través del comando fuente <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/ts"><code>TS</code></a>. Esto está disponible en Elastic Cloud Serverless y la versión 9.2 básica como vista previa técnica.</p><p>El análisis de series temporales se basa en gran medida en consultas de agregación que resumen los valores métricos a lo largo de las cubetas de tiempo, divididos por una o más dimensiones de filtrado. La mayoría de las consultas de agregación se basan en un procesamiento de dos pasos, con (a) una función de agregación interna que resume los valores por serie temporal y (b) una función de agregación externa, que combina los resultados de (a) en todas las series temporales.</p><p>El comando de origen <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/ts"><code>TS</code></a>, combinado con <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/stats-by"><code>STATS</code></a>, proporciona una forma concisa, pero efectiva de expresar tales consultas sobre series temporales. Más concretamente, considera el siguiente ejemplo para calcular la tasa total de solicitudes por host y hora:</p>TS my_metrics
| WHERE @timestamp &gt; NOW() - 1 day
| STATS SUM(RATE(requests))
      BY host, TBUCKET(1h)<p>En este caso, la función de agregación de seriales temporales <code>RATE</code> se evalúa primero por series temporales y hora. Los agregados parciales producidos se combinan luego al usar <code>SUM</code> para calcular los valores agregados finales por host y por hora.</p><p>Puedes consultar la lista de funciones de agregación de series temporales disponibles <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/time-series-aggregation-functions">aquí</a>. Ahora se admite la tasa <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/time-series-data-stream-tsds#time-series-metric">de contador</a>, posiblemente la función de agregación más importante para procesar contadores.</p><p>El comando fuente <code>TS</code> está diseñado para combinarse con <code>STATS</code>, con ejecución ajustada para soportar eficientemente agregaciones de series temporales. Por ejemplo, los datos se ordenan antes de pasar a las <code>STATS</code>. Actualmente, no se permiten comandos de procesamiento que puedan enriquecer o alterar los datos temporales o su orden, como <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/fork"><code>FORK</code></a> o <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/inlinestats-by"><code>INLINE STATS</code></a>, entre <code>TS</code> y <code>STATS</code>. Esta limitación podría eliminarse en el futuro.</p><p>La salida tabular <code>STATS</code> se puede procesar aún más con cualquier comando aplicable. Por ejemplo, la siguiente búsqueda calcula la relación del promedio de <code>cpu_usage</code> por host hospedado y hora con el valor máximo por host:</p>TS my_metrics
| STATS avg_usage = AVG(AVG_OVER_TIME(cpu_usage))
      BY host, time_bucket = TBUCKET(1h)
| INLINE STATS max_avg_usage = MAX(avg_usage)
      BY host
| EVAL ratio = avg_usage / max_avg_usage
| KEEP host, time_bucket, ratio
| SORT host, time_bucket DESC<p>Los datos temporales se almacenan en nuestro motor de almacenamiento columnar subyacente que funciona con los valores de documentos de Lucene. El comando TS agrega ejecución de consultas vectorizadas a través del motor de cómputo ES|QL. El rendimiento de las búsquedas a menudo se mejora en más de un orden de magnitud, en comparación con las consultas <a href="https://www.elastic.co/docs/reference/query-languages/querydsl">DSL</a> equivalentes, y está a la par con los sistemas establecidos específicos de métricas. En el futuro ofreceremos un análisis detallado de arquitectura y rendimiento, así que mantente alerta.</p><h2>Ampliación de tu conjunto de herramientas: funciones nuevas de ES|QL</h2><p>Para mejorar aún más la utilidad y versatilidad de ES|QL, agregamos un conjunto de <a href="https://www.elastic.co/docs/reference/query-languages/esql/esql-functions-operators">funciones</a> nuevas:</p><p><strong>Manipulación de cadenas: </strong><a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/string-functions#esql-contains">CONTAINS</a>, <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/mv-functions#esql-mv_contains">MV_CONTAINS</a>, <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/string-functions#esql-url_encode">URL_ENCODE</a>, <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/string-functions#esql-url_encode_component">URL_ENCODE_COMPONENT</a>, <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/string-functions#esql-url_decode">URL_DECODE</a> para un procesamiento más robusto de texto y URL.</p><p><strong>Serie temporal y geoespacial:</strong> <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/grouping-functions#esql-tbucket">TBUCKET</a> para cubetas de tiempo flexibles, TO_DENSE_VECTOR para operaciones vectoriales y un conjunto completo de <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/spatial-functions">funciones geoespaciales</a> como <code>ST_GEOHASH</code>, <code>ST_GEOTILE</code>, <code>ST_GEOHEX</code>, <code>TO_GEOHASH</code>, <code>TO_GEOTILE</code>, <code>TO_GEOHEX</code> para un análisis avanzado basado en la ubicación.</p><p><strong>Formato de fechas:</strong> <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/date-time-functions#esql-day_name">DAY_NAME</a>, <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/date-time-functions#esql-month_name">MONTH_NAME</a> para representaciones de fechas más legibles.</p><p>Estas funciones te proporcionan un conjunto más completo de herramientas para manipular y analizar tus datos directamente dentro de ES|QL.</p><h2>Bajo el capó: Más rendimiento y eficiencia</h2><p>Más allá de las características destacadas, Elasticsearch 9.2 incluye varias optimizaciones de rendimiento en ES|QL. Aceleramos <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/where#like-and-rlike">RLIKE (LIST</a>) con pushdown en casos en los que la función reemplaza múltiples consultas RLIKE similares. Con <code>RLIKE</code> (LIST), podemos fusionar esas búsquedas en un único autómata y aplicar un autómata en vez de varios. También tenemos una carga más rápida de los campos de palabras clave con ordenamientos de índice y optimizaciones generales de consultas; estas mejoras aseguran que tus consultas ES|QL se ejecuten más eficientemente que nunca.</p><h2>¡Comienza hoy mismo!</h2><p>Elasticsearch 9.2 representa un avance significativo para ES|QL, ya que brinda un poder y flexibilidad sin precedentes a sus flujos de trabajo de análisis de datos. Te invitamos a explorar estas funciones nuevas y a experimentar la diferencia que generan.</p><p>Para obtener una lista completa de todos los cambios y mejoras de Elasticsearch 9.2, consulte las <a href="https://www.elastic.co/guide/en/elasticsearch/reference/9.2/release-notes-9.2.0.html">notas de lanzamiento oficiales</a>. ¡Feliz búsqueda!</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/esql-elasticsearch-9-2-multi-field-joins-ts-command</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/esql-elasticsearch-9-2-multi-field-joins-ts-command</guid>
    <category><![CDATA[ES|QL]]></category>
    <dc:creator><![CDATA[Tyler Perkins,Kostas Krikellas,Julian Kiryakov]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd30ea8cac3809cc3/6a17f1aa4b055dd8734322f8/415894e21e7758c907d6e60d4efc94230349beef-2012x1164.png" length="0" type="image/png"/>
    <pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>