検索¶
エクスプローラーの検索バーは、トークン検索、フレーズ検索、フィールドフィルター、JSON 検索、関数クエリをサポートしています。DQL モードに切り替えて、完全なクエリステートメントを作成することもできます。
検索方法の選択¶
| クエリ要件 | 使用方法 | 例 |
|---|---|---|
| テキスト内容の検索 | テキスト検索 | connection timeout |
| 連続フレーズの検索 | フレーズ検索 | #"connection timeout" |
| フィールドと値によるフィルター | フィールドフィルター | service:api |
| JSON 埋め込みフィールドの検索 | JSON 検索 | @meta.service:api |
| MD5 マスクデータの検索 | MD5 関数クエリ | color:md5(red) |
| IP ネットワークセグメントの検索 | CIDR 関数クエリ | CIDR(@client_ip, 10.0.0.0/8) |
| 複雑なクエリや計算の実行 | DQL クエリ | L::logs:(*) {...} |
検索とフィルター
テキストを直接入力すると、システムはトークン検索を実行します。引用符の前に # を付けると、フレーズ検索を実行します。フィールド名:フィールド値 を使用すると、フィールドフィルターを実行します。例えば、error timeout はトークン検索、#"error timeout" は連続フレーズ検索、service:api は service フィールドのフィルターに使用します。
複合検索¶
ログエクスプローラーは、検索バーのドロップダウンリストに AND、OR などの一般的な複合演算子を提案します。
AND:前後両方の条件を満たす;OR:前後のいずれかの条件を満たす;- 複合演算子は大文字で使用する必要があります;
- 小文字の
and、orは通常のテキストとして検索に参加します。
例:
service:api AND status:error
source:nginx OR source:apache
(service:api OR service:web) AND status:error
テキスト検索¶
エクスプローラーのテキスト検索は、search() クエリ構文を使用します。システムは入力内容をトークン化し、すべてのトークンを同時に含むデータを検索します。
- 中国語は文字単位でトークン化されます;
- 英語はスペース、句読点などの単語境界でトークン化されます;
- 英語検索は大文字と小文字を区別しません;
- 各トークンは連続して出現する必要はありません。
トークン検索¶
テキストを入力すると、システムは自動的にトークン化します。データにすべてのトークンが同時に含まれていれば、トークン間に他の内容があっても検索できます。
中国語の例:
上記の結果にはすべて、検索内容の有効なトークンがすべて含まれており、これらのトークンは連続して出現する必要はありません。
英語の例:
入力:connection timeout
一致する可能性:
- connection timeout
- Connection retry timeout
- connection request failed due to timeout
上記の結果にはすべて "connection" と "timeout" の両方が含まれており、トークンは連続して出現する必要はなく、大文字と小文字も区別しません。
フレーズ検索¶
完全で連続したフレーズで検索する必要がある場合は、引用符の前に # を追加します。英語の半角二重引用符を推奨します。
#"我喜欢苹果":"我喜欢苹果,也喜欢香蕉" には一致しますが、"我很喜欢吃苹果" には一致しません;#"connection timeout":"connection timeout occurred" には一致しますが、"connection retry timeout" には一致しません。
エクスプローラーは以下のフレーズ記法をサポートします:
| 記法 | 説明 | 変換後の DQL 条件 |
|---|---|---|
#"connection timeout" |
推奨記法 | search('#"connection timeout"') |
#'connection timeout' |
シングルクォート互換記法 | search('#"connection timeout"') |
#“connection timeout” |
中国語引用符互換記法 | search('#"connection timeout"') |
# はフレーズ検索演算子であり、検索内容には含まれません。引用符のみを使用し、# を追加しない場合、フレーズ検索は有効になりません。引用符は対で使用する必要があり、フレーズを空にすることはできません。閉じていない #"connection timeout、#'connection timeout、および空のフレーズ #""、#'' は有効なクエリとして実行されません。
フレーズ検索は、フィールドフィルターや複合演算子と組み合わせて使用できます:
ここで、-#"health check" は、その連続フレーズを含むデータを除外することを意味し、DQL 条件 not search('#"health check"') に対応します。標準モードから DQL モードに切り替えると、互換記法は統一して #"..." の DQL フレーズ形式に変換されます。標準モードに戻す際に、バックスラッシュエスケープ文字が累積されることはありません。
ストップワード
頻繁に出現し、検索において意味が小さい一部の単語は、全文検索の対象外となります。検索結果が期待と異なる場合は、全文検索ストップワード一覧 を参照してください。
JSON 検索¶
前提条件
- ワークスペースが
2022年6月23日以降に作成されていること; - ログエクスプローラーで使用します。
JSON 検索は、ログ message 内の埋め込みフィールドをクエリするために使用します。message は有効な JSON 形式である必要があります。クエリ形式は @フィールド名:フィールド値 です。ネストされたフィールドをクエリする場合は、. を使用して各階層のフィールド名を接続します。
@meta.service:api を例に取ります:
| 構成要素 | 意味 |
|---|---|
@ |
JSON フィールドプレフィックス。エクスプローラーはこれを演算子として認識します |
meta.service |
message 内のネストされたフィールドパス |
: |
フィールドと値の区切り文字 |
api |
一致させる必要があるフィールド値 |
例えば、message の内容が以下の場合:
{
"__namespace": "tracing",
"cluster_name_k8s": "k8s-demo",
"meta": {
"service": "ruoyi-mysql-k8s",
"name": "mysql.query"
}
}
以下の条件でクエリできます:
@cluster_name_k8s:k8s-demo # 完全一致
@cluster_name_k8s:k?s* # ワイルドカード一致
@meta.service:ruoyi-mysql-k8s # ネストフィールドのクエリ
@meta.service:ruoyi?mysql* # ネストフィールドのワイルドカード一致
ここで、* はゼロ個以上の文字に一致し、? は1文字に一致します。このワイルドカードはフィールドフィルターにのみ使用され、通常のテキスト検索には適用されません。
フィールド名に . が含まれる場合¶
JSON 検索では、. はデフォルトでネストされたフィールド階層を意味します。フィールド名自体に . が含まれている場合は、バックスラッシュ \ でエスケープする必要があります。
| シナリオ | 正しい記法 | 説明 |
|---|---|---|
ネストフィールド log.tag のクエリ |
@log.tag:error |
. はフィールド階層を示します |
フィールド名 user.id のクエリ |
@user\.id:1001 |
\ により . がフィールド名の一部としてエスケープされます |
引用符でフィールド名を囲むことはサポートされていません(例:@"user.id":1001)。
MD5 関数クエリ¶
機密データスキャンルールが機密コンテンツを MD5 処理する場合、元の値は不可逆な32桁の16進数ハッシュ値に置き換えられます。マスクされたデータを元の値で特定する必要がある場合は、エクスプローラーで MD5 関数クエリを使用できます。
関数形式の使用を推奨します:
例えば、color フィールドの元の値 red が MD5 ハッシュに変換されている場合、次のように入力します:
システムはこれを以下の DQL 条件に変換します:
エクスプローラーは md5 と括弧を関数構文として認識します。既存のクエリとの互換性のため、古い記法 color:md5|red も引き続き使用可能で、同じ DQL 条件が生成されます。関数の引数を空にすることはできません。MD5 は大文字と小文字、およびスペースを区別するため、入力内容が暗号化前の元の値と完全に一致していることを確認してください。
MD5 は一方向ハッシュアルゴリズムであり、ハッシュ値から元の内容を復元することはできません。詳細は機密データスキャンを参照してください。
DQL クエリ¶
関数、式、集計、または複雑なフィルター条件を使用する必要がある場合は、検索バー右側の DQL ボタンをクリックして、DQL クエリモードに切り替えます:
標準モードの検索条件は、モード切り替え時に DQL に変換されます。例えば:
| 標準モード | DQL 条件 |
|---|---|
#"connection timeout" |
search('#"connection timeout"') |
-#"health check" |
not search('#"health check"') |
color:md5(red) |
`color` = md5("red") |
システムは現在のエクスプローラーに基づいて、対応するデータタイプとデータソースを自動的に設定します。例えば、以下の DQL クエリは、直近1時間以内に message に connection timeout を含むログを検索します:
Lはログデータを示します;"default"はログインデックスを示します;logsはデータソースを示します;[1h]は直近1時間のデータをクエリすることを示します。
DQL モードに入ると、完全な DQL ステートメントを使用する必要があります。エクスプローラーごとに対応するデータタイプが異なり、現在のエクスプローラーで他のデータタイプに切り替えることはできません。
ログエクスプローラーの分析モード
ログエクスプローラーで高度なクエリとページ分析設定を組み合わせて使用する場合、クエリステートメントに BY グループ化条件が含まれていると、ページはステートメント内の BY を無視し、ページ設定の分析ディメンションを優先します。これにより、重複や競合するグループ化条件の発生を防ぎます。
CIDR 関数クエリ¶
CIDR 関数は、指定された IP フィールド内の特定のネットワークセグメントに属するデータをクエリするために使用します。文字列一致ではなく、ネットワークセグメントの範囲一致を実行します。
CIDR はネットワークアドレスとプレフィックス長で構成されます(例:13.0.0.0/8)。プレフィックス長が大きいほど、一致するアドレス範囲は小さくなります。IPv4 では /32 は1つの IP アドレスのみに一致します。
クエリ形式:
例えば、network.client.ip フィールド内の 13.0.0.0/8 ネットワークセグメントに属するデータをクエリする場合:
単一の IPv4 アドレスを正確に一致させる必要がある場合は、/32 を使用します:
フィールド値が空、形式が間違っている、または有効な IP アドレスでない場合は、一致しません。
DQL モードでは、小文字の cidr() 関数を使用し、ネットワークセグメントを二重引用符で囲むことができます:
検索履歴¶
ログエクスプローラーのインデックス選択履歴は、検索およびフィルター条件の履歴とは独立しており、ログインデックス検索ボックス右側の履歴アイコンから開きます。
現在のユーザーは、ローカルブラウザで最近使用した検索およびフィルター条件を確認できます。最大100件まで保持されます。履歴条件をクリックすると、現在のエクスプローラーで再利用できます。
検索履歴の統合記録
エクスプローラーはプラットフォーム内の汎用ツールとして複数の機能に適用され、機能間での検索履歴の相互利用にはいくつかの違いがあります:
- RUM > Session/View/Resource/Action/Long Task/Error の6種類のエクスプローラーは検索履歴を共有します;
- コンテナエクスプローラーと Kubernetes エクスプローラーは検索履歴を共有します;
- リソースカタログエクスプローラーは検索履歴を共有します;
- ログエクスプローラーとログエラー追跡エクスプローラーは検索履歴を共有します;
- 分散型トレーシングエクスプローラー、APM エラー追跡、プロファイリングエクスプローラーは検索履歴を共有します。
上記を除き、その他のエクスプローラーはそれぞれ独立して検索履歴を保存します。


