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を選択します。
クエリバー
ES|QLモードに切り替えると、クエリバーにサンプルクエリが表示されます。例えば:
Esql
from kibana_sample_data_logs | limit 10
すべてのクエリはsource commandで始まります。このクエリでは、ソースコマンドはFROM
です。FROM
は、データストリーム、インデックス、またはエイリアスからデータを取得します。この例では、データはkibana_sample_data_logs
から取得されます。
ソースコマンドの後には、1つ以上のprocessing commandsが続くことがあります。このクエリでは、処理コマンドはLIMIT
です。LIMIT
は、取得される行数を制限します。
ヘルプアイコン ()をクリックして、すべてのコマンドと関数の製品内リファレンスドキュメントを開きます。
クエリの記述を容易にするために、オートコンプリートは可能なコマンドと関数の提案を提供します:
ES|QLキーワードは大文字と小文字を区別しません。次のクエリは前のクエリと同じです:
Esql
FROM kibana_sample_data_logs | LIMIT 10
クエリバーの拡張
可読性のために、各処理コマンドを新しい行に置くことができます。次のクエリは前のクエリと同じです:
Esql
FROM kibana_sample_data_logs
| LIMIT 10
複数行のクエリを記述しやすくするために、ダブルヘッダー矢印ボタン ()をクリックしてクエリバーを拡張します:
コンパクトなクエリバーに戻るには、最小化エディターボタン ()をクリックします。
警告
クエリは、サポートされていないフィールドタイプをクエリする場合などに警告を生成することがあります。その場合、クエリバーに警告シンボルが表示されます。詳細な警告を表示するには、クエリバーを展開し、警告をクリックします。
クエリ履歴
最近のES|QLクエリをクエリバーで再利用できます。クエリバーで最近のクエリを表示をクリックします:
その後、最近のクエリをスクロールできます:
結果テーブル
例のクエリでは、結果テーブルに10行が表示されます。LIMIT
コマンドを省略すると、結果テーブルは最大1000行にデフォルト設定されます。LIMIT
を使用すると、制限を最大10,000行に増やすことができます。
10,000行の制限は、クエリによって取得され、Discoverに表示される行数にのみ適用されます。クエリや集計は、完全なデータセットで実行されます。
各行は、例のクエリに対して2つの列を表示します: @timestamp
フィールドの列と、完全なドキュメントの列です。ドキュメントから特定のフィールドを表示するには、KEEP
コマンドを使用します:
Esql
FROM kibana_sample_data_logs
| KEEP @timestamp, bytes, geo.dest
すべてのフィールドを別々の列として表示するには、KEEP *
を使用します:
Esql
FROM kibana_sample_data_logs
| KEEP *
Discoverでの最大列数は50です。クエリが50列を超える場合、Discoverは最初の50列のみを表示します。
ソート
列の1つでソートするには、ソートしたい列名をクリックし、ソート順を選択します。これはクライアント側のソートを実行することに注意してください。これは、クエリによって取得された行のみをソートします。これは、(暗黙の)制限のため、完全なデータセットではない可能性があります。完全なデータセットをソートするには、SORT
コマンドを使用します:
Esql
FROM kibana_sample_data_logs
| KEEP @timestamp, bytes, geo.dest
| SORT bytes DESC
時間フィルタリング
指定された時間範囲内のデータを表示するには、time filterを使用します。時間フィルタは、クエリしているインデックスに@timestamp
というフィールドがある場合にのみ有効になります。
インデックスに@timestamp
というタイムスタンプフィールドがない場合、WHERE
コマンドとNOW
関数を使用して時間範囲を制限できます。例えば、タイムスタンプフィールドがtimestamp
と呼ばれる場合、最後の15分間のデータをクエリするには:
Esql
FROM kibana_sample_data_logs
| WHERE timestamp > NOW() - 15minutes
データの分析と視覚化
クエリバーと結果テーブルの間に、Discoverは日付ヒストグラムの視覚化を表示します。クエリしているインデックスに@timestamp
フィールドが含まれていない場合、ヒストグラムは表示されません。
視覚化はクエリに適応します。クエリの性質が視覚化のタイプを決定します。例えば、このクエリは目的国ごとのバイト数の合計を集計します:
Esql
FROM kibana_sample_data_logs
| STATS total_bytes = SUM(bytes) BY geo.dest
| SORT total_bytes DESC
| LIMIT 3
結果の視覚化は、上位3か国を示す棒グラフです:
視覚化の変更を行うには、視覚化タイプ、軸、色を変更するために鉛筆ボタン ()をクリックします。これにより、インラインエディタが開きます:
視覚化を新しいまたは既存のダッシュボードに保存するには、保存ボタン ()をクリックします。ダッシュボードに保存されると、ダッシュボードページに移動します。視覚化の変更を続けることができます。右上のオプションボタン ()をクリックし、ESQL視覚化の編集を選択してインラインエディタを開きます:
ダッシュボードにパネルを追加
ES|QLクエリを使用してダッシュボードにパネルを作成できます。ダッシュボードにパネルを追加するには、ダッシュボードの下でパネルを追加ボタンをクリックし、ES|QLを選択します。
パネルフィルターボタン ()をクリックしてES|QLクエリを確認します:
ここからES|QL視覚化を編集することもできます。右上のオプションボタン ()をクリックし、ESQL視覚化の編集を選択してインラインエディタを開きます。
エンリッチポリシーの作成
ES|QL ENRICH
コマンドを使用すると、別のデータセットからフィールドを使用してクエリデータセットをエンリッチできます。ENRICH
を使用する前に、エンリッチポリシーを作成して実行する必要があります。ポリシーが存在する場合、オートコンプリートによって提案されます。存在しない場合は、作成するにはクリックをクリックして作成します。
次に、ポリシー名、ポリシータイプ、ソースインデックス、およびオプションでクエリを入力できます:
次へをクリックして、マッチフィールドとエンリッチフィールドを選択します:
最後に、作成して実行をクリックします。
これで、ES|QLクエリでエンリッチポリシーを使用できます:
Esql
FROM kibana_sample_data_logs
| STATS total_bytes = SUM(bytes) BY geo.dest
| SORT total_bytes DESC
| LIMIT 3
| ENRICH countries
アラートルールの作成
ES|QLクエリを使用してアラートを作成できます。Discoverからアラートをクリックし、検索しきい値ルールを作成を選択します。これにより、ES|QLクエリを使用してルールを作成できるパネルが開きます。次に、クエリをテストし、コネクタを追加し、ルールを保存できます。
制限事項
- 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
を使用して、返されるフィールドの数を制限してください。