<?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/pt/search-labs/author/tyler-perkins</link>
    </image>
    <link>https://www.elastic.co/pt/search-labs/author/tyler-perkins</link>
    <atom:link href="https://www.elastic.co/pt/search-labs/rss/author/tyler-perkins.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[pt]]></language>
    <lastBuildDate>Fri, 18 Sep 2026 22:38:47 GMT</lastBuildDate>
  <item>
    <title><![CDATA[ES|QL na 9.2: Smart Lookup Joins e compatibilidade com séries temporais]]></title>
    <description><![CDATA[Explore três atualizações separadas do ES|QL no Elasticsearch 9.2: um LOOKUP JOIN aprimorado para uma correlação de dados mais expressiva, o novo comando TS para análise de séries temporais e o comando INLINE STATS flexível para agregação.]]></description>
    <content:encoded><![CDATA[<p>Elasticsearch 9.2, lançado em outubro, está repleto de avanços significativos que tornam a análise dos seus dados mais rápida, mais flexível e mais acessível do que nunca. No centro desta versão estão importantes melhorias no ES|QL, nossa linguagem de consulta baseada em pipes, projetada para oferecer ainda mais valor diretamente aos usuários finais.</p><p>Aqui está uma visão dos recursos do Elasticsearch 9.2 que transformarão seus fluxos de trabalho de análise de dados com o ES|QL.</p><h2>Revolucionando a correlação de dados: um Lookup Join mais inteligente, rápido e flexível</h2><p>O comando <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/lookup-join">LOOKUP JOIN</a> no ES|QL passou por uma transformação significativa no Elasticsearch 9.2, tornando-se dramaticamente mais eficiente e versátil. O comando LOOKUP JOIN combina dados da sua tabela de resultados da consulta ES|QL com registros correspondentes de um índice de modo de consulta especificado. Ele adiciona campos do índice de pesquisa como novas colunas à sua tabela de resultados com base em valores correspondentes no campo de join. Anteriormente, a junção de dados estava limitada a um único campo e igualdade simples. Não mais! Essas melhorias capacitam você a lidar com cenários complexos de correlação de dados de forma fácil.</p><p><strong>Os principais aprimoramentos do Lookup Join incluem:</strong></p><ul><li><p><strong>Joins de múltiplos campos:</strong> crie joins facilmente em múltiplos campos. Por exemplo, para unir <code>application_logs</code> com <code>service_registry</code> em <code>service_name</code>, <code>environment</code> e <code>version:</code></p></li></ul>FROM application_logs
| LOOKUP JOIN service_registry ON service_name, environment, version<ul><li><p><strong>Liberando predicados de joins complexos com expressões (prévia técnica):</strong></p></li></ul><p>Você não está mais limitado à simples igualdade. O LOOKUP JOIN agora permite especificar <strong>múltiplos critérios</strong> para correlação e incorporar uma variedade de <strong>operadores binários,</strong> incluindo ==, !=, &lt;, &gt;, &lt;=, e &gt;=. Isso significa que você pode criar condições de join altamente nuançadas, permitindo que você faça perguntas muito mais sofisticadas sobre seus dados.</p><p>Exemplo 1: encontrando métricas de aplicação com limite de SLA por serviço</p>FROM application_metrics
| LOOKUP JOIN sla_thresholds
      ON service_name == sla_service AND response_time &gt; sla_response_time<p>Exemplo 2: esta consulta calcula o valor devido com base em políticas regionais de precificação que mudam ao longo do tempo. Ele une três conjuntos de dados baseados em condições complexas de intervalo de datas e igualdade para calcular um <code>due_amount</code> final. A segunda busca usa o campo <code>measurement_date</code> do índice <code>meter_readings</code> e o campo <code>region_id</code> do índice <code>customers</code> para se juntar ao índice <code>pricing_policies</code> e encontrar a política de precificação correta para o <code>region</code> e <code>measurement_date</code> específicos.</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>Ganhos massivos de desempenho para joins filtrados: </strong></p></li></ul><p>Melhoramos o desempenho para "joins expansivos" que são filtrados usando condições de tabela de consulta. Os joins expansivos produzem múltiplas correspondências por linha de entrada, o que pode criar grandes conjuntos intermediários de resultados. Isso piora quando muitas dessas linhas são descartadas por um filtro subsequente. Na versão 9.2, otimizamos esses joins filtrando linhas desnecessárias quando um filtro é aplicado aos dados de consulta, evitando processar linhas que seriam descartadas. Em alguns cenários, esses joins podem ser até <strong>1000 vezes mais rápidos</strong>!</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltce2c948a9a00a348/6a17f1a20b0bed8c08dd368b/002c014ee29b1aaf9ddeb8c554bb76efe3ed180c-1572x954.png" alt="Ganhos de desempenho em joins filtrados" /><p>Essa otimização é crucial ao lidar com joins em expansão, onde uma pesquisa pode inicialmente gerar muitas correspondências potenciais. Ao aplicar filtros de forma inteligente, apenas os dados relevantes são processados, reduzindo drasticamente o tempo de execução da consulta e permitindo a análise em tempo real em grandes conjuntos de dados. Isso significa que você obtém seus insights muito mais rapidamente, mesmo com operações de join muito grandes ou complexas.</p><p><strong>Compatibilidade do Lookup Join Cross-Cluster Search (CCS):</strong></p><p>Quando o Lookup Join foi lançado como GA nas versões 8.19 e 9.1, ele não era compatível com Pesquisa entre clusters (CCS). Para organizações que operam em vários clusters, o LOOKUP JOIN agora se integra perfeitamente ao CCS na versão 9.2. Basta colocar seu índice de pesquisa em todos os clusters remotos onde você deseja realizar um join, e o ES|QL aproveitará automaticamente esses índices de pesquisa remota para unir seus dados remotos. Isso simplifica a análise distribuída de dados e garante um enriquecimento consistente em toda a sua implantação do Elasticsearch.</p><p>Essas melhorias significam que você pode correlacionar conjuntos de dados diversos com precisão, rapidez e facilidade sem precedentes, revelando insights mais profundos e acionáveis sem soluções complexas ou etapas de pré-processamento.</p><h2>Enriqueça seus dados com facilidade: Kibana Discover UX para Lookup Indices</h2><p>O enriquecimento de dados deve ser simples, não um obstáculo. Introduzimos uma experiência fantástica de usuário no Discover do Kibana para criar e gerenciar índices de lookup.</p><p><strong>Fluxo de trabalho intuitivo:</strong> o preenchimento automático abrangente do Discover guiará você pelo processo, sugerindo índices de pesquisa e campos de união no editor ES|QL, tornando incrivelmente fácil conectar seus dados carregados aos índices existentes. Digite o nome de um índice de consulta que não exista e obtenha acesso direto ao editor de pesquisa com um clique para criar o índice. Digite o nome de um índice de consulta existente e sugeriremos uma opção para editá-lo:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt20a75bcfd25eb156/6a17f1a46864a4864db688a1/d36fd6ffd6bc0bf8d31067f6266445c68d15c71c-1400x184.png" alt="" /><p><strong>Gestão em linha (CRUD):</strong> mantenha seus conjuntos de dados de referência atualizados com capacidades de edição em linha (Criar, Ler, Atualizar, Excluir) diretamente no Discover.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6263c5dd8c2c9d7e/6a17f1a5af47b614dbcde095/a0e4aa66540b1f725c24ccb0519d978415073bb6-1453x842.png" alt="Exemplo de uma consulta LOOKUP" /><p><strong>Upload de arquivos sem esforço: </strong>Agora você pode carregar arquivos diretamente, como CSVs, no Discover e usá-los instantaneamente nos seus <code>LOOKUP JOIN</code>. Chega de alternar entre diferentes áreas do Kibana!</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltddfcc3580af0e5c6/6a17f1a73e9e45965aba1587/0f5dc2c712af4c4cada50292a7c8b836eb02aa67-1600x748.png" alt="Adicione facilmente dados a um índice de consulta e use-os em JOINs de busca." /><p>Seja no mapeamento de IDs de usuário a nomes, adicionando metadados empresariais ou unindo arquivos de referência estáticos, este recurso democratiza o enriquecimento de dados, colocando a capacidade de melhorar com os joins diretamente nas mãos de cada usuário – rápido, simples e tudo em um só lugar.</p><h2>Mantenha seu contexto: Apresentando INLINE STATS (prévia técnica)</h2><p>Agregar dados é fundamental, mas às vezes você precisa ver os agregados <em>junto com</em> os dados originais. Temos o prazer de apresentar <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/inlinestats-by">INLINE STATS</a> como um recurso <strong>de visualização técnica</strong>.</p><p>Ao contrário do comando <code>STATS</code>, que substitui seus campos de entrada pela saída agregada, <code>INLINE STATS</code> preserva todos os campos de entrada originais e simplesmente adiciona os novos campos agregados. Isso permite que você execute outras operações nos campos de entrada originais <em>após</em> a agregação, proporcionando um fluxo de trabalho de análise mais contínuo e flexível.</p><p>Por exemplo, para calcular a distância média de voo mantendo as linhas individuais de voo:</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="Filtrando os resultados de voo com distância maior que a média usando o avgDist " /><p>Nessa consulta, <code>avgDist</code> é adicionado a cada linha com a <code>Dest</code>(inação) correspondente pela qual agrupamos e, como ainda temos as colunas de informações do voo, podemos filtrar os resultados para os voos com uma distância maior que a média.</p><h2>Compatível com séries temporais no ES|QL (prévia técnica)</h2><p>O Elasticsearch utiliza <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/time-series-data-stream-tsds">fluxos de dados de séries temporais</a> para armazenar métricas. Estamos adicionando suporte para agregações de séries temporais no ES|QL, através do comando <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/ts"><code>TS</code></a> source. Isso está disponível no Elastic Cloud Serverless e na versão 9.2 básica como uma prévia técnica.</p><p>A análise de séries temporais é amplamente baseada em consultas de agregação que resumem os valores das métricas em buckets de tempo, divididos por uma ou mais dimensões de filtragem. A maioria das consultas de agregação depende do processamento em duas etapas, com (a) uma função de agregação interna resumindo valores por série temporal e (b) uma função de agregação externa, combinando os resultados de (a) em todas as séries temporais.</p><p>O comando <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/ts"><code>TS</code></a> source, combinado com <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/stats-by"><code>STATS</code></a>, fornece uma forma concisa, porém eficaz, de expressar tais consultas ao longo de séries temporais. Mais concretamente, considere o seguinte exemplo para calcular a taxa total de solicitações por host e por hora:</p>TS my_metrics
| WHERE @timestamp &gt; NOW() - 1 day
| STATS SUM(RATE(requests))
      BY host, TBUCKET(1h)<p>Nesse caso, a função de agregação de séries temporais <code>RATE</code> é avaliada primeiro por série temporal e hora. Os agregados parciais produzidos são então combinados usando <code>SUM</code> para calcular os valores agregados finais por hospedado e por hora.</p><p>Você pode conferir a lista de funções de agregação de séries temporais disponíveis <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/time-series-aggregation-functions">aqui</a>. A taxa de <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/time-series-data-stream-tsds#time-series-metric">contador</a> agora é compatível, provavelmente a função de agregação mais importante para processar contadores.</p><p>O comando <code>TS</code> source é projetado para ser combinado com <code>STATS</code>, com execução ajustada para ser compatível com agregações de séries temporais de forma eficiente. Por exemplo, os dados são ordenados antes de serem inseridos no <code>STATS</code>. Comandos de processamento que possam enriquecer ou alterar os dados de série temporal ou sua ordem, como <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/fork"><code>FORK</code></a> ou <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/inlinestats-by"><code>INLINE STATS</code></a>, atualmente não são permitidos entre <code>TS</code> e <code>STATS</code>. Essa limitação pode ser eliminada no futuro.</p><p>A saída tabular <code>STATS</code> pode ser processada ainda com qualquer comando aplicável. Por exemplo, a consulta a seguir calcula a razão entre a média <code>cpu_usage</code> por host e hora para o 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>Os dados de série temporal são armazenados em nosso mecanismo de armazenamento colunar subjacente, que é alimentado pelos valores de documento do Lucene. O comando TS adiciona execução vetorizada de consultas através do mecanismo de computação ES|QL. O desempenho das consultas geralmente é melhorado em mais de uma ordem de magnitude, em comparação com consultas <a href="https://www.elastic.co/docs/reference/query-languages/querydsl">DSL</a> equivalentes, e está em pé de igualdade com sistemas estabelecidos e específicos para métricas. No futuro, forneceremos uma análise detalhada de arquitetura e desempenho, então fique ligado.</p><h2>Expandindo seu conjunto de ferramentas: novas funções ES|QL</h2><p>Para aprimorar ainda mais a utilidade e a versatilidade do ES|QL, adicionamos um conjunto de novas <a href="https://www.elastic.co/docs/reference/query-languages/esql/esql-functions-operators">funções</a>:</p><p><strong>Manipulação de string: </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 processamento mais robusto de texto e URL.</p><p><strong>Séries temporais e geoespaciais:</strong> <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/grouping-functions#esql-tbucket">TBUCKET</a> para buckets flexíveis de tempo, TO_DENSE_VECTOR para operações vetoriais e um conjunto abrangente de <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/spatial-functions">funções geoespaciais</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 análise avançada baseada em localização.</p><p><strong>Formatação de datas:</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 representações de data mais legíveis.</p><p>Essas funções oferecem um conjunto mais rico de ferramentas para manipular e analisar seus dados diretamente dentro do ES|QL.</p><h2>Sob o capô: mais desempenho e eficiência</h2><p>Além dos recursos destacados, o Elasticsearch 9.2 inclui diversas otimizações de desempenho em todo o ES|QL. Aceleramos <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/where#like-and-rlike">RLIKE (LIST</a>) com pushdown nos casos em que a função substitui várias consultas RLIKE semelhantes. Com <code>RLIKE</code> (LIST), podemos unir essas consultas em um único autômato e aplicar um autômato em vez de vários. Também temos carregamento mais rápido dos campos de palavras-chave com ordenação de índice e otimizações gerais de consultas – essas melhorias garantem que suas consultas ES|QL sejam executadas de forma mais eficiente do que nunca.</p><h2>Comece hoje mesmo!</h2><p>Elasticsearch 9.2 representa um salto significativo para o ES|QL, trazendo uma melhoria e flexibilidade sem precedentes para seus fluxos de trabalho de análise de dados. Incentivamos você a explorar esses novos recursos e experimentar a diferença que eles fazem.</p><p>Para uma lista abrangente de todas as mudanças e aprimoramentos no Elasticsearch 9.2, consulte as <a href="https://www.elastic.co/guide/en/elasticsearch/reference/9.2/release-notes-9.2.0.html">notas de lançamento oficiais</a>. Boas consultas!</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>