KibanaでのES|QLの使用

KibanaでES|QLを使用してデータをクエリし、集計し、視覚化を作成し、アラートを設定できます。

このガイドでは、KibanaでES|QLを使用する方法を示します。クエリに従うには、Kibanaのホームからサンプルデータを試すをクリックし、他のサンプルデータセットを選択し、サンプルWebログカードのデータを追加をクリックして、”サンプルWebログ”サンプルデータセットをロードします。

ES|QLの有効化または無効化

Kibanaでは、ES|QLはデフォルトで有効になっています。これは、高度な設定enableESQL設定を使用して無効にできます。

これにより、さまざまなアプリケーションからES|QLユーザーインターフェースが隠されます。ただし、ユーザーは保存された検索や視覚化などの既存のES|QLアーティファクトにアクセスできます。

ES|QLの開始

DiscoverでES|QLを開始するには、メインメニューを開き、Discoverを選択します。次に、データビューのメニューから言語: ES|QLを選択します。

esql data view menu

クエリバー

ES|QLモードに切り替えると、クエリバーにサンプルクエリが表示されます。例えば:

Esql

  1. from kibana_sample_data_logs | limit 10

すべてのクエリはsource commandで始まります。このクエリでは、ソースコマンドはFROMです。FROMは、データストリーム、インデックス、またはエイリアスからデータを取得します。この例では、データはkibana_sample_data_logsから取得されます。

ソースコマンドの後には、1つ以上のprocessing commandsが続くことがあります。このクエリでは、処理コマンドはLIMITです。LIMITは、取得される行数を制限します。

ヘルプアイコン (Static)をクリックして、すべてのコマンドと関数の製品内リファレンスドキュメントを開きます。

クエリの記述を容易にするために、オートコンプリートは可能なコマンドと関数の提案を提供します:

esql kibana auto complete

ES|QLキーワードは大文字と小文字を区別しません。次のクエリは前のクエリと同じです:

Esql

  1. FROM kibana_sample_data_logs | LIMIT 10

クエリバーの拡張

可読性のために、各処理コマンドを新しい行に置くことができます。次のクエリは前のクエリと同じです:

Esql

  1. FROM kibana_sample_data_logs
  2. | LIMIT 10

複数行のクエリを記述しやすくするために、ダブルヘッダー矢印ボタン (esql icon expand query bar)をクリックしてクエリバーを拡張します:

esql expanded query bar

コンパクトなクエリバーに戻るには、最小化エディターボタン (esql icon minimize query bar)をクリックします。

警告

クエリは、サポートされていないフィールドタイプをクエリする場合などに警告を生成することがあります。その場合、クエリバーに警告シンボルが表示されます。詳細な警告を表示するには、クエリバーを展開し、警告をクリックします。

クエリ履歴

最近のES|QLクエリをクエリバーで再利用できます。クエリバーで最近のクエリを表示をクリックします:

esql discover show recent query

その後、最近のクエリをスクロールできます:

esql discover query history

結果テーブル

例のクエリでは、結果テーブルに10行が表示されます。LIMITコマンドを省略すると、結果テーブルは最大1000行にデフォルト設定されます。LIMITを使用すると、制限を最大10,000行に増やすことができます。

10,000行の制限は、クエリによって取得され、Discoverに表示される行数にのみ適用されます。クエリや集計は、完全なデータセットで実行されます。

各行は、例のクエリに対して2つの列を表示します: @timestampフィールドの列と、完全なドキュメントの列です。ドキュメントから特定のフィールドを表示するには、KEEPコマンドを使用します:

Esql

  1. FROM kibana_sample_data_logs
  2. | KEEP @timestamp, bytes, geo.dest

すべてのフィールドを別々の列として表示するには、KEEP *を使用します:

Esql

  1. FROM kibana_sample_data_logs
  2. | KEEP *

Discoverでの最大列数は50です。クエリが50列を超える場合、Discoverは最初の50列のみを表示します。

ソート

列の1つでソートするには、ソートしたい列名をクリックし、ソート順を選択します。これはクライアント側のソートを実行することに注意してください。これは、クエリによって取得された行のみをソートします。これは、(暗黙の)制限のため、完全なデータセットではない可能性があります。完全なデータセットをソートするには、SORTコマンドを使用します:

Esql

  1. FROM kibana_sample_data_logs
  2. | KEEP @timestamp, bytes, geo.dest
  3. | SORT bytes DESC

時間フィルタリング

指定された時間範囲内のデータを表示するには、time filterを使用します。時間フィルタは、クエリしているインデックスに@timestampというフィールドがある場合にのみ有効になります。

インデックスに@timestampというタイムスタンプフィールドがない場合、WHEREコマンドとNOW関数を使用して時間範囲を制限できます。例えば、タイムスタンプフィールドがtimestampと呼ばれる場合、最後の15分間のデータをクエリするには:

Esql

  1. FROM kibana_sample_data_logs
  2. | WHERE timestamp > NOW() - 15minutes

データの分析と視覚化

クエリバーと結果テーブルの間に、Discoverは日付ヒストグラムの視覚化を表示します。クエリしているインデックスに@timestampフィールドが含まれていない場合、ヒストグラムは表示されません。

視覚化はクエリに適応します。クエリの性質が視覚化のタイプを決定します。例えば、このクエリは目的国ごとのバイト数の合計を集計します:

Esql

  1. FROM kibana_sample_data_logs
  2. | STATS total_bytes = SUM(bytes) BY geo.dest
  3. | SORT total_bytes DESC
  4. | LIMIT 3

結果の視覚化は、上位3か国を示す棒グラフです:

esql kibana bar chart

視覚化の変更を行うには、視覚化タイプ、軸、色を変更するために鉛筆ボタン (esql icon edit visualization)をクリックします。これにより、インラインエディタが開きます:

esql kibana in line editor

視覚化を新しいまたは既存のダッシュボードに保存するには、保存ボタン (esql icon save visualization)をクリックします。ダッシュボードに保存されると、ダッシュボードページに移動します。視覚化の変更を続けることができます。右上のオプションボタン (esql icon options)をクリックし、ESQL視覚化の編集を選択してインラインエディタを開きます:

esql kibana edit on dashboard

ダッシュボードにパネルを追加

ES|QLクエリを使用してダッシュボードにパネルを作成できます。ダッシュボードにパネルを追加するには、ダッシュボードの下でパネルを追加ボタンをクリックし、ES|QLを選択します。

esql dashboard panel

パネルフィルターボタン (Panel filters button on panel header)をクリックしてES|QLクエリを確認します:

esql dashboard panel query

ここからES|QL視覚化を編集することもできます。右上のオプションボタン (esql icon options)をクリックし、ESQL視覚化の編集を選択してインラインエディタを開きます。

esql dashboard panel edit visualization

エンリッチポリシーの作成

ES|QL ENRICHコマンドを使用すると、別のデータセットからフィールドを使用してクエリデータセットをエンリッチできます。ENRICHを使用する前に、エンリッチポリシーを作成して実行する必要があります。ポリシーが存在する場合、オートコンプリートによって提案されます。存在しない場合は、作成するにはクリックをクリックして作成します。

esql kibana enrich autocomplete

次に、ポリシー名、ポリシータイプ、ソースインデックス、およびオプションでクエリを入力できます:

esql kibana enrich step 1

次へをクリックして、マッチフィールドとエンリッチフィールドを選択します:

esql kibana enrich step 2

最後に、作成して実行をクリックします。

これで、ES|QLクエリでエンリッチポリシーを使用できます:

Esql

  1. FROM kibana_sample_data_logs
  2. | STATS total_bytes = SUM(bytes) BY geo.dest
  3. | SORT total_bytes DESC
  4. | LIMIT 3
  5. | ENRICH countries

アラートルールの作成

ES|QLクエリを使用してアラートを作成できます。Discoverからアラートをクリックし、検索しきい値ルールを作成を選択します。これにより、ES|QLクエリを使用してルールを作成できるパネルが開きます。次に、クエリをテストし、コネクタを追加し、ルールを保存できます。

esql kibana create rule

制限事項

  • DiscoverがES|QLモードのとき、データをフィルタリングするためのユーザーインターフェースは有効になっていません。データをフィルタリングするには、WHEREコマンドを使用するクエリを記述してください。
  • Discoverは10,000行を超えることはありません。この制限は、クエリによって取得され、Discoverに表示される行数にのみ適用されます。クエリと集計は、完全なデータセットで実行されます。
  • Discoverは50列を超えることはありません。クエリが50列を超える場合、Discoverは最初の50列のみを表示します。
  • DiscoverからのCSVエクスポートは10,000行を超えることはありません。この制限は、クエリによって取得され、Discoverに表示される行数にのみ適用されます。クエリと集計は、完全なデータセットで実行されます。
  • フィルタなしで複数のインデックスを一度にクエリすると、Kibanaで[esql] > Unexpected error from Elasticsearch: The content length (536885793) is bigger than the maximum allowed string (536870888)のようなエラーが発生する可能性があります。ES|QLからの応答が長すぎます。DROPまたはKEEPを使用して、返されるフィールドの数を制限してください。