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

Discoverページは4つのコア領域で構成されています:
1. クエリ入力エリア(上部)
クエリ範囲と検索文を設定します。機能には以下が含まれます:
- データソースを選択
- 時間フィールドと時間範囲を選択
- SQLまたはLucene構文で検索条件を入力
2. 時系列トレンドエリア(中央)
クエリ結果の時間ベースの分布を示すヒストグラム。機能には以下が含まれます:
- マッチングデータの時間経過による傾向を素早く観察
- 時間ウィンドウをドラッグ選択してクエリの時間範囲を変更
3. 詳細データエリア(下部)
クエリ結果の詳細レコードを文脈的探索と共に表示。機能には以下が含まれます:
- 最新のマッチングレコードを表示;
trace_idが存在する場合、クリックしてtrace詳細を表示 - 単一のログを展開してすべてのフィールドをテーブルまたは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つの形式があります:- ダブルクォートで囲まれた条件はフレーズマッチを表す — すべての単語がクォート内と同じ順序で現れる必要があります。
- クォートなしの条件はキーワードマッチを表す — 単語のいずれかがマッチできます。
*はワイルドカードを表します。
- 数値と日付値の場合、
match_conditionには3つの形式があります:- 単一値は等値を表します。
>、<は範囲を表し、SQLと同様です。- 括弧は区間を表す — 角括弧は閉区間、波括弧は開区間です。
- 複数の条件はAND / OR / NOTで組み合わせ可能で、SQLと同様です。括弧でグループ化の優先度を調整します。
SQL構文の要点:
MATCHとMATCH_ANYはLuceneキーワードマッチに対応 — キーワードのいずれかがマッチ(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フィールドがある場合、関連traceとして認識されます。値はクリック可能なリンクになり、クリックするとlog-to-trace相関のためのtraceウォーターフォールドロワーが開きます。

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