ログとトレース検索
Discoverページは、高性能なログ解析に最適化されたKibana Discover風の検索・分析エクスペリエンスを提供します。
主な機能:
- SQLとLuceneの両方のクエリ構文をサポート
- ログからトレースへのワンクリックナビゲーション
- 時間範囲、フィルターなどのインタラクティブな選択
- テーブルとJSONの両方の結果表示を提供
- コンテキスト分析のための指定レコード周辺データの表示
- フィールド値の分布統計(上位5位の値とパーセンテージ)
Discoverページの概要

Discoverページは4つの中核エリアで構成されています:
1. クエリ入力エリア(上部)
クエリスコープと検索ステートメントを設定します。機能には以下が含まれます:
- データソースの選択
- 時間フィールドと時間範囲の選択
- SQLまたはLucene構文による検索条件の入力
2. 時間トレンドエリア(中央)
クエリ結果の時間ベースの分布を示すヒストグラム。機能には以下が含まれます:
- マッチするデータが時間経過とともにどのようにトレンドしているかを素早く観察
- 時間ウィンドウをドラッグ選択してクエリの時間範囲を変更
3. 詳細データエリア(下部)
コンテキストの探索を伴うクエリ結果の詳細レコードを表示します。機能には以下が含まれます:
- 最新のマッチするレコードを表示;
trace_idが存在する場合は、クリックしてトレース詳細を表示 - 単一ログを展開してすべてのフィールドをテーブルまたはJSON形式で表示
- テーブル形式からフィルター条件をインタラクティブに構築
- レコードの周辺データを表示
4. フィールドブラウザエリア(左側)
現在のテーブルのすべてのフィールドを表示し、フィールドレベルの探索を提供します。
機能には以下が含まれます:
- 右側に表示するフィールドを選択;デフォルトでは
_source(全フィールドの連結)が表示されます - フィールドにカーソルを合わせると上位5位の最頻値とパーセンテージを確認
- 値の「+」または「-」をクリックしてフィルター条件をインタラクティブに構築し、上部のクエリバーと同期
クエリ入力
クエリ入力エリアでは、ドロップダウンメニューを使用してデータソース、データベース、テーブル、時間フィールド、時間範囲を選択します。データソース、データベース、テーブルのデフォルト値は設定ページで変更可能です;デフォルトの時間フィールドはテーブル内の最初のDATETIMEまたはDATE列です。

検索入力ボックスはSQLとLucene構文の両方をサポートします — Luceneは内部的にSQL WHERE条件に変換されます。サポートされるLucene構文、Kibana、SQLのマッピングを以下に示します。
| 機能 | Doris App Lucene構文 | Kibana | SQL WHERE | 注記 |
|---|---|---|---|---|
| 単一フィールドキーワードマッチ | service_name:kafka | 同じ | service_name MATCH 'kafka' | 完全フィールドマッチ、service_name MATCH_ANY 'kafka'に書き換え |
| フィールド横断キーワードマッチ | error | 同じ | (service_name MATCH 'error') OR (scope_name MATCH 'error') | 全転置インデックスフィールド間の全文マッチ、自動的にマルチフィールドMATCH_ANYとして書き換え |
| 単一フィールドフレーズマッチ | service_name:"kafka logs" | 同じ | service_name MATCH_PHRASE 'kafka logs' | フィールドレベルフレーズマッチ |
| フィールド横断フレーズマッチ | "kafka logs" | 同じ | service_name MATCH_PHRASE 'kafka logs') | 完全フレーズマッチ、MATCH_PHRASEに書き換え |
| ワイルドカード | kaf* | 同じ | ((service_name MATCH_PHRASE_PREFIX 'kaf') OR (scope_name MATCH_PHRASE_PREFIX 'kaf')) | 前置/後置ワイルドカード、MATCH_PHRASE_PREFIXに書き換え |
| 数値/時間範囲 | duration:[100 TO 500] | 同じ | duration BETWEEN 100 AND 500 | SQL BETWEENに変換 |
| 無制限範囲 | duration:>500 | 同じ | duration > '500' | SQL比較に変換 |
| 開/閉範囲 | {100 TO 200} | 同じ | 中括弧は開区間を示す | |
| AND結合 | service_name:kafka AND status:failed | 同じ | (service_name MATCH 'kafka') AND (status MATCH 'failed') | 論理AND |
| OR結合 | error OR warning | 同じ | 論理OR | |
| NOT結合 | NOT kafka or -kafka | 同じ | NOT (service_name MATCH 'kafka') | 論理NOT |
| グループ化 | (service_name:kafka OR service_name:zookeeper) AND status:failed | 同じ | ((service_name MATCH 'kafka') OR (service_name MATCH 'zookeeper')) AND (status MATCH 'failed') | 複雑な論理結合をサポート |
Lucene構文の要点:
- 基本形式は
field_name:match_conditionです。 field_name:はmatch_conditionに対して単一フィールドをマッチします。field_name:がない場合、単純なmatch_conditionは任意のフィールドがマッチする場合にマッチします(フィールド間のOR)。- テキスト値の場合、
match_conditionには3つの形式があります:- ダブルクォートで囲まれた条件はフレーズマッチを示します — 全ての単語がクォート内と同じ順序で出現する必要があります。
- クォートのない条件はキーワードマッチを示します — 単語の任意の1つがマッチできます。
*はワイルドカードを示します。
- 数値と日付値の場合、
match_conditionには3つの形式があります:- 単一の値は等価を示します。
>、<は範囲を示し、SQLと似ています。- 括弧は区間を示します — 閉区間は角括弧、開区間は中括弧。
- 複数の条件はAND / OR / NOTで結合でき、SQLと似ています。括弧はグループ化の優先順位を調整します。
SQL構文の要点:
MATCHとMATCH_ANYはLuceneキーワードマッチに対応します — キーワードの任意の1つがマッチします(OR関係)。MATCH_ALLもキーワードマッチですが、全てのキーワードがマッチする必要があります(AND関係)。MATCH_PHRASEはLuceneフレーズマッチに対応します — 全ての単語が同じ順序で。- 等価と範囲クエリは標準の
=、>、<、BETWEENを使用します。 - 複数の条件はAND / OR / NOTで結合でき、括弧が優先順位を調整します。
時間トレンドデータ
以下に示すように、赤いボックス内のエリアが時間トレンドデータエリアです。これは時間経過に伴うマッチするデータのカウントとトレンドを素早く確認するためのものです。以下のインタラクションが利用可能です:
- バーにカーソルを合わせて、時間バケットの開始時間とその中のマッチするデータのカウントを確認。
- トレンドチャート上でドラッグ選択してクエリの時間範囲を変更。
- バケット長はデフォルトで
Autoに設定され、全体の時間範囲に合わせてスケールされます。ドロップダウンから秒、分、時間などの異なる粒度を選択することもできます。

詳細データ
以下に示すように、赤いボックス内のエリアが詳細データエリアで、クエリ条件にマッチするレコードを表示します。
- レコードは時間フィールドで降順にソートされ、最新のデータが最初に表示されます。各ページは50レコードを表示し、さらに多くを見るためにページネーションできます。デフォルトでは2つのフィールドが表示されます:時間フィールドと
_source。_sourceは全フィールドの仮想的な連結で、可読性のためにキーがハイライトされたkey: valueペアとして表示されます。左側のフィールドブラウザでフィールド名の横の「+」をクリックすることで、右側に表示されるフィールドをカスタマイズできます。複数のフィールドを追加でき、右側の「x」をクリックして削除できます;全てのフィールドが削除されると、デフォルトの_sourceにフォールバックします。

- 最左端の「->」矢印をクリックしてレコードの詳細を展開します。テーブルとJSONの2つの形式があります。テーブル形式では、フィールドの横の「+」または「-」をクリックして、
severity_text=INFOなどのフィルター条件をインタラクティブに追加できます。

- レコードを展開した後、周辺項目をクリックして、そのレコードの「コンテキスト」— 時間的にその前後5レコードを表示します。この機能は問題分析中に特定のログ周辺のログを調査するために一般的に使用されるため、時間以外の他のクエリフィルター条件は無視されることに注意してください — そうでなければ詳細データテーブルと同じ動作になります。もちろん5個以上の周辺レコードを表示し、特定のホストへの制限などの独自のフィルターを追加することもできます。

- レコードに
trace_idフィールドがある場合、関連するトレースとして認識されます。値はクリック可能なリンクになり、クリックするとログからトレースへの相関のためのトレース・ウォーターフォール・ドロワーが開きます。

フィールドブラウザ
左側のフィールドブラウザでは、現在のテーブルのフィールドを調査し、その値の分布を分析できます。
- フィールドの右側の「+」をクリックして詳細データテーブルに追加します。
- フィールド名をクリックして上位5位の最頻値を確認し、値の横の「+」/「-」をクリックして動的にフィルター条件を追加します。
