<?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[Kostas Krikellas - 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[Kostas Krikellas - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/jp/search-labs/author/kostas-krikellas</link>
    </image>
    <link>https://www.elastic.co/jp/search-labs/author/kostas-krikellas</link>
    <atom:link href="https://www.elastic.co/jp/search-labs/rss/author/kostas-krikellas.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[jp]]></language>
    <lastBuildDate>Tue, 22 Sep 2026 18:25:12 GMT</lastBuildDate>
  <item>
    <title><![CDATA[ES|QL 9.2：スマートになったLookup Joinと時系列サポート]]></title>
    <description><![CDATA[Elasticsearch 9.2のES|QLでは、データ相関をより表現豊かにするためのLOOKUP JOIN強化、時系列分析用の新しいTSコマンド、集計用の柔軟なINLINE STATSコマンドの3つのアップデートを行いました。]]></description>
    <content:encoded><![CDATA[<p>10月にリリースされたElasticsearch 9.2には、データの分析をこれまで以上に高速化、柔軟化、アクセスしやすくするための大きな進化が詰まっています。このリリースの中心となるのは、パイプクエリ言語であるES|QLの重要な機能強化で、エンドユーザーに直接さらに多くの価値をもたらすように設計されています。</p><p>ES|QLを使用してデータ分析ワークフローを変革するElasticsearch 9.2の特徴を見てみましょう。</p><h2>データ相関の革命：よりスマート高速、柔軟になったLookup Join</h2><p>ES|QLの<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/lookup-join">LOOKUP JOIN</a>コマンドはElasticsearch 9.2で大幅に変更され、効率性と汎用性が飛躍的に向上しました。LOOKUP JOINは、ES|QLクエリ結果テーブルのデータを、指定されたルックアップモードインデックスの一致するレコードと結合します。結合フィールド内の一致する値に基づいて、ルックアップ インデックスのフィールドが新しい列として結果テーブルに追加されます。以前は、データの結合は単一のフィールドと単純な等式に制限されていましたが、これが改善されました。これらの機能強化により、複雑なデータ相関シナリオに簡単に対処できるようになります。</p><p><strong>Lookup Joinの主な機能強化は次のとおりです。</strong></p><ul><li><p><strong>複数フィールド結合：</strong>複数のフィールドを簡単に結合できます。例えば、<code>application_logs</code> を <code>service_name</code>、<code>environment</code> の <code>service_registry</code> と結合する場合 <code>version:</code></p></li></ul>FROM application_logs
| LOOKUP JOIN service_registry ON service_name, environment, version<ul><li><p><strong>式を使用して複雑なjoin述語を活用（テクニカルプレビュー）：</strong></p></li></ul><p>もはや、単純な等式に制限されることはありません。LOOKUP JOINでは、<strong>複数の条件</strong>を相関に指定し、==、!=、、&lt;=、&gt;= を含む <strong>二項演算子</strong>の範囲を組み込むことができます。つまり、非常に微妙な結合条件を作成できるようになり、データに対してより高度な質問をすることができるようになります。</p><p>例1：サービスごとのSLAしきい値を使用したアプリケーションメトリクスの検索</p>FROM application_metrics
| LOOKUP JOIN sla_thresholds
      ON service_name == sla_service AND response_time &gt; sla_response_time<p>例2：このクエリは、時間とともに変化する地域の価格ポリシーに基づいて支払われるべき金額を計算します。複雑な日付範囲と等しい条件に基づく3つのデータセットを統合し、最終的に <code>due_amount</code>を算出します。2番目のルックアップ結合では、 <code>meter_readings</code>インデックスの<code>measurement_date</code>フィールドと<code>customers</code>インデックスの<code>region_id</code>フィールドを使用して<code>pricing_policies</code>インデックスに結合し、特定の<code>region</code>と<code>measurement_date</code>の正しい価格設定ポリシーを検索します。</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>フィルターされた結合のパフォーマンスが大幅に向上： </strong></p></li></ul><p>ルックアップテーブル条件を使用してフィルター処理される「拡張結合」のパフォーマンスが向上しました。拡張結合では、入力行ごとに複数の一致が生成され、大きな中間結果セットが作成されることがあります。これらの行の多くが後続のフィルターによって破棄されると、状況はさらに悪化します。9.2では、ルックアップデータにフィルターを適用するときに不要な行を除外することでこれらの結合を最適化し、破棄される行の処理を回避します。シナリオによっては、これらの結合は最大<strong>1000倍高速</strong>化される可能性があります。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltce2c948a9a00a348/6a17f1a20b0bed8c08dd368b/002c014ee29b1aaf9ddeb8c554bb76efe3ed180c-1572x954.png" alt="フィルタリングされた結合のパフォーマンス向上" /><p>この最適化は、ルックアップによって最初に多くの潜在的な一致が生成される可能性がある「拡張結合」を処理する場合に重要です。フィルターをインテリジェントにプッシュダウンすることで、関連するデータのみが処理され、クエリ実行時間が大幅に短縮され、膨大なデータセットでのリアルタイム分析が可能になります。つまり、非常に大規模または複雑な結合操作の場合でも、はるかに速く洞察を得ることができます。</p><p><strong>Lookup Joinクラスター横断検索（CCS）の互換性：</strong></p><p>8.19および9.1でLookup Joinが一般公開となった際、クロスクラスター検索（CCS）のサポートはありませんでした。複数のクラスターにまたがって運用している組織のため、LOOKUP JOINは9.2でCCSとシームレスに統合されるようになりました。ルックアップインデックスを結合したいすべてのリモートクラスターに配置するだけで、ES|QLは自動的にこれらのリモートルックアップインデックスを活用して、リモートデータと結合します。これにより、分散データ分析が簡素化され、Elasticsearch展開全体で一貫したエンリッチメントが保証されます。</p><p>これらの改善により、多様なデータセットを前例のない精度、速度、そして容易さで関連付けることができ、複雑な回避策や前処理のステップなしに、より深く、実用的な洞察を明らかにすることができます。</p><h2>データを簡単に充実化：ルックアップインデックスのためのKibana Discoverユーザーエクスペリエンス</h2><p>データのエンリッチメントはハードルではなく、シンプルであるべきです。KibanaのDiscoverに、ルックアップインデックスの作成と管理のための素晴らしい新しいユーザーエクスペリエンスを導入しました。</p><p><strong>直感的なワークフロー：</strong>Discoverの包括的なオートコンプリートがES|QLエディターでルックアップインデックスや結合フィールドを提案するため、アップロードされたデータを既存のインデックスと驚くほど簡単に結びつけることができます。存在しないルックアップインデックスの名前を入力し、ワンクリックでルックアップエディターに直接アクセスしてインデックスを作成できます。既存の検索インデックスの名前を入力すると、編集オプションを提案します。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt20a75bcfd25eb156/6a17f1a46864a4864db688a1/d36fd6ffd6bc0bf8d31067f6266445c68d15c71c-1400x184.png" alt="" /><p><strong>インライン管理（CRUD）：</strong> Discoverで直接、参照データセットをインライン編集機能（作成、読み取り、更新、削除）で最新の状態に保ちます。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6263c5dd8c2c9d7e/6a17f1a5af47b614dbcde095/a0e4aa66540b1f725c24ccb0519d978415073bb6-1453x842.png" alt="LOOKUPクエリの例" /><p><strong>簡単なファイルアップロード：</strong>CSVなどのファイルをDiscover内で直接アップロードし、 <code>LOOKUP JOIN</code>ですぐに使用できるようになりました。Kibanaのさまざまなエリアにジャンプしてコンテキストを切り替える必要はもうありません！</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltddfcc3580af0e5c6/6a17f1a73e9e45965aba1587/0f5dc2c712af4c4cada50292a7c8b836eb02aa67-1600x748.png" alt="ルックアップインデックスにデータを簡単に追加してLOOKUP JOINで使用" /><p>ユーザーIDを名前にマッピングしたり、ビジネスメタデータを追加したり、静的参照ファイルを結合したりする際、この特徴はデータのエンリッチメントを民主化し、結合のパワーをすべてのユーザーの手元に直接、迅速かつシンプルに、そして一箇所で提供します。</p><h2>コンテキストの保持：INLINE STATSのご紹介（テクニカルプレビュー）</h2><p>データの集約は重要ですが、時には集約を<em>元のデータと</em>並べて見る必要があることもあります。<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/inlinestats-by">INLINE STATSを</a><strong>テクニカルプレビュー</strong>機能としてご紹介できることを嬉しく思います。</p><p>入力フィールドを集約された出力に置き換える<code>STATS</code>コマンドとは異なり、 <code>INLINE STATS</code>元の入力フィールドをすべて保持し、新しい集約されたフィールドを追加します。これにより、集計<em>後に</em>元の入力フィールドに対してさらに操作を実行できるようになり、より継続的で柔軟な分析ワークフローが実現します。</p><p>例えば、個々のフライトの行を保持しながら平均飛行距離を計算する場合：</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="avgDistを使用した平均距離以上のフライト結果のフィルタリング " /><p>このクエリでは、<code>avgDist</code>が各行に対応する<code>Dest</code>(ination)と共に追加され、さらに、フライト情報の列が残っているため、平均を超える距離のフライトに結果をフィルタリングできます。</p><h2>ES|QL における時系列サポート (技術プレビュー)</h2><p>Elasticsearchは、メトリックを格納するために<a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/time-series-data-stream-tsds">時系列データストリーム</a>を使用します。<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/ts"><code>TS</code></a>ソースコマンドを通じて、ES|QLの時系列集計のサポートを追加しています。これは、Elastic Cloud Serverlessと9.2 basicでテクニカルプレビューとして利用できます。</p><p>時系列分析は主に、1つ以上のフィルタリングディメンションでスライスされた時間バケット全体のメトリック値を要約する集計クエリに基づいています。ほとんどの集計クエリは、(a) 時系列ごとに値を集計する内部集計関数と、(b) 時系列全体で (a) の結果を結合する外部集計関数という2段階の処理に依存しています。</p><p><a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/ts"><code>TS</code></a>ソースコマンドを<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/stats-by"><code>STATS</code></a>と組み合わせると、時系列にわたるこのようなクエリを簡潔かつ効果的に表現できるようになります。より具体的には、ホストおよび時間あたりのリクエストの合計レートを計算する次の例を考えてみましょう。</p>TS my_metrics
| WHERE @timestamp &gt; NOW() - 1 day
| STATS SUM(RATE(requests))
      BY host, TBUCKET(1h)<p>この場合、時系列アグリゲーション関数 <code>RATE</code> はまず時系列と時間ごとに評価されます。生成された部分集計は、 <code>SUM</code>を使用して結合され、ホストおよび時間ごとの最終的な集計値が計算されます。</p><p>利用可能な時系列集計関数のリストは<a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/time-series-aggregation-functions">こちらで</a>確認できます。カウンターを処理するための最も重要な集計関数の<a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/time-series-data-stream-tsds#time-series-metric">counter</a>レートがサポートされるようになりました。</p><p><code>TS</code>ソースコマンドは<code>STATS</code>と組み合わせて使用するように設計されており、時系列集計を効率的にサポートするように実行が調整されています。例えば、データは<code>STATS</code>に入る前にソートされます。処理コマンド（<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/fork"><code>FORK</code></a>や<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/inlinestats-by"><code>INLINE STATS</code></a>など）によって時系列データを強化または変更したり、その順序を変更したりすることは、現在<code>TS</code>と<code>STATS</code>の間で許可されていません。この制限は将来解除される可能性があります。</p><p><code>STATS</code>表形式の出力は、適用可能なコマンドを使用してさらに処理できます。例えば、以下のクエリは、ホストごとの平均の <code>cpu_usage</code> と時間の比率とホストごとの最大値の比率を計算します。</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>時系列データは、Luceneドキュメント値を利用した基盤となる列指向ストレージエンジンに保存されます。TSコマンドは、ES|QLコンピュートエンジンを介してベクトル化されたクエリの実行を追加します。クエリパフォーマンスは、同等の<a href="https://www.elastic.co/docs/reference/query-languages/querydsl">DSL</a>クエリと比較して、しばしば1桁以上の向上が見られ、確立されたメトリクス固有のシステムと同等になります。今後、詳細なアーキテクチャおよびパフォーマンス分析も提供する予定ですので、どうぞご期待ください。</p><h2>ツールキットの拡張：新しい ES|QL関数</h2><p>ES|QLの実用性と多様性をさらに高めるために、新しい<a href="https://www.elastic.co/docs/reference/query-languages/esql/esql-functions-operators">関数</a>群を追加しました。</p><p><strong>文字列操作：</strong><a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/string-functions#esql-contains">INCLUDES</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>が追加され、より堅牢なテキストおよびURL処理を実現します。</p><p><strong>時系列と地理空間:</strong>柔軟な時間バケツ処理のための<a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/grouping-functions#esql-tbucket">TBUCKET</a> 、ベクトル演算のための TO_DENSE_VECTOR、高度な位置ベースの分析のための<code>ST_GEOHASH</code> 、 <code>ST_GEOTILE</code> 、 <code>ST_GEOHEX</code> 、 <code>TO_GEOHASH</code> 、 <code>TO_GEOTILE</code> 、 <code>TO_GEOHEX</code>などの包括的な<a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/spatial-functions">地理空間関数</a>のセット。</p><p><strong>日付のフォーマット：</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>は、より読みやすい日付表現のために使用されます。</p><p>これらの関数には、ES|QL内で直接データを操作および分析するための豊富なツールセットが用意されています。</p><h2>内部の改善：パフォーマンスと効率性の向上</h2><p>注目の機能以外にも、Elasticsearch 9.2にはES|QL全体にわたる数多くのパフォーマンス最適化が含まれています。関数が複数の類似したRLIKEクエリを置き換える場合に、プッシュダウンを使用して<a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/where#like-and-rlike">RLIKE (LIST</a>) を高速化しました。<code>RLIKE</code> (LIST) を使用すると、これらのクエリを1つのオートマトンに結合し、複数ではなく1つのオートマトンを適用できます。また、インデックスの並べ替えによるキーワードフィールドの読み込みが高速化され、クエリ全般が最適化されました。これらの改善により、ES|QLクエリがこれまで以上に効率的に実行されるようになります。</p><h2>今すぐ始めましょう！</h2><p>Elasticsearch 9.2は、ES|QLを大きく飛躍させ、データ分析ワークフローにかつてないパワーと柔軟性をもたらします。ぜひこれらの新機能を試して、その違いを体験してください。</p><p>Elasticsearch 9.2のすべての変更点と機能強化の包括的なリストについては、<a href="https://www.elastic.co/guide/en/elasticsearch/reference/9.2/release-notes-9.2.0.html">公式リリースノート</a>を参照してください。楽しいクエリングを!</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>