0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[v9.2] ES|QLのLOOKUP JOINがマルチキーに対応。これで“JOINの限界”が大幅に緩和!

Last updated at Posted at 2025-12-02

はじめに

現代のシステム運用では、メトリクス、ログ、トレース、構成情報など、さまざまなデータソースを組み合わせて分析する オブザーバビリティ が重要になっています。
たとえば「特定のホストでCPU使用率が高い原因はどのリージョンやラックに設置されたどのハードウェアか?」といった問いに答えるには、複数のデータを正確に突き合わせる必要があります。

ElasticsearchのES|QLでは、これまでLOOKUP JOINを使うことで異なるインデックスのデータを結合できましたが、単一キーでの結合しかサポートされていなかったため、同じホスト名が複数リージョンに存在する場合などには誤った結合が発生することがありました。

しかし最新のアップデートにより、複数キーでのLOOKUP JOINがサポートされるようになりました。
これにより、host.name と cloud.region のような複合キーで正確にデータを結合でき、Observabilityデータの分析精度が格段に向上します。

本記事では、この新機能を活用して サンプルデータを作成・Elasticsearchに投入し、複合キーJOINでメトリクスとインベントリ情報を結合する方法 を紹介します。

Elasticクラスタの作成

start localでPC上に作ってもクラウドでもOKです
Observability Solution Viewを前提にしています

サンプルデータの準備

まず、Observabilityでよく使われる メトリクス情報 (metrics) と インベントリ情報 (inventory) の2種類のサンプルデータを用意します。

以下のGitHubリポジトリをクローンします
https://github.com/legacyworld/smart_join

環境変数

.env
ES_ENDPOINT=https://your-deployment-id.region.cloud.es.io:443
ES_API_KEY=your_api_key_here
ES_INDEX_METRICS=metrics
ES_INDEX_INVENTORY=inventory

ここでENDPOINTとAPI_KEYが必要になります。

  • ENDPOINT
    メニュー左下のデータベースアイコンをクリックして右上のConnection detailsをクリックすると表示されますので、Elasticsearch endpointをコピーします。
    2025-11-1012.34.05.png

  • API KEY
    メニュー左下の歯車をクリックしてAPI keysを選び、右上のCreate API keyをクリックすると作成画面が表示されます
    2025-11-1012.32.33.png

プログラム実行

プログラムの中身

Pythonスクリプトでは以下を行います:

  1. .env から接続情報を読み込む
  2. metrics インデックスを存在する場合は削除して再作成
  3. inventory インデックスを LOOKUP JOIN 用に index.mode=lookup で作成
  4. サンプルデータを Elasticsearch に投入

実行

dockerで実行できます。

docker compose up -d
docker exec -it python python create.py

start localなどでElasticをローカルに立てている場合は、Elasticsearchにlocalhost:9200でアクセスできない(コンテナ自身になってしまう)ため、create.pyをPC上で実行するなどしてください

ES|QLでJOIN

Discoverに行って、右上にあるTry ES|QLをクリックします。
スクリーンショット 2025-08-21 15.17.16.png

以下のように入れてみます

FROM metrics
| LOOKUP JOIN inventory ON host.name.keyword, cloud.region.keyword
| EVAL cpu_pct = system.cpu.usage * 100
| KEEP host.name, cloud.region, cpu_pct, system.memory.used_pct, hardware.model, hardware.rack
| SORT cloud.region, cpu_pct DESC

2025-11-1014.03.55.png

複数キーで突合できていることがわかります

まとめ

v9.0でJOINがリリースされて以来、いろいろご利用いただいていると思います。
今回はご要望の多かった複数キーでのJOINについて取り上げました。
これからもJOIN機能は増えていく予定です。様々な場面でぜひ使ってみてください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?