Simple Log Service (SLS) では、検索文を実行して Logstore に保存されているログをクエリできます。検索結果は、個別に使用することも、分析文の入力として使用して複雑なデータ分析を実行することもできます。
前提条件
基本構文
各クエリ文は、検索文と分析文で構成されます。検索文と分析文は、縦棒 (|) で区切られます。クエリ文の例:
* | SELECT status, count(*) AS PV GROUP BY status文 | 説明 |
検索文 | 検索文は、1 つ以上の検索条件を指定します。キーワード、数値、範囲、またはアスタリスク (*) などの検索文で検索条件を指定します。スペースまたはアスタリスク (*) を指定すると、すべてのログに一致します。 重要 検索文には最大 30 個の検索条件を指定します。 |
分析文 | 重要 分析文に FROM 句や WHERE 句を指定する必要はありません。デフォルトでは、現在の Logstore のすべてのデータが分析されます。分析文では大文字と小文字は区別されず、オフセットはサポートされず、末尾にセミコロン (;) を付ける必要もありません。 分析文は、検索結果または Logstore 内のすべてのデータを集計または分析するために使用されます。SLS がログの分析でサポートする関数と構文の詳細については、次のトピックをご参照ください。 |
検索文の作成プロセス
クエリ文を作成するには、次のステップを実行します。
ステップ 1: 検索タイプを選択する
ステップ 2: フィールドのデータ型を選択する
ステップ 3: 一致モードを選択する
検索文の例
異なるインデックス構成に基づいて異なるログに対して検索文を実行すると、文は異なる結果を返します。このセクションで提供される例は、次のサンプルログとインデックス構成に基づいています。
text、double、long 型
サンプルログ
サンプルログとして NGINX アクセスログが使用されます。

インデックス構成
インデックスを作成してから検索文を実行します。インデックス構成を確認するには、次のステップを実行します。
Logstore の [クエリと分析] ページで、 を選択します。
[検索と分析] パネルで、フィールドインデックスが構成されているかどうかを確認します。
一般的な検索例
期待される検索結果 | 検索文 | デバッグ |
成功した GET リクエストを記録したログ (状態コード: 200 ~ 299)。 | | |
中国 (杭州) リージョンから発信されていない GET リクエストのログ。 | | なし |
GET リクエストまたは POST リクエストを記録したログ。 | | |
GET リクエストを記録していないログ。 | | |
成功した GET または POST リクエストを記録したログ。 | | |
失敗した GET または POST リクエストを記録したログ。 | | |
成功した GET リクエスト (状態コード: 200 ~ 299) を記録し、リクエスト期間が 60 秒未満のログ。 | | |
リクエスト期間が 60 秒に等しいログ。 | | |
| ||
リクエスト期間が 60 秒以上 200 秒未満のログ。 | | |
| ||
request_time フィールドが存在するかどうか。 | | |
request_time フィールドが空であるか、フィールド値が無効な数値であるログ。 | | |
request_time フィールドを含み、フィールド値が数値であるログ。 | | |
and を含むログ。 | 説明 単語 | |
request method フィールドの値が PUT であるログ。 | 重要 request method フィールドの名前にはスペースが含まれています。検索文ではフィールド名を二重引用符 ("") で囲む必要があります。 | なし |
トピックが HTTPS または HTTP のログ。 | | なし |
192.0.2.1 ホストから収集されたログ。 |
重要 ログがデータ変換機能または Logtail プラグインを使用して処理される場合、__tag__:__client_ip__ フィールドのキーは共通キーに変換されます。ログを検索する場合は、検索文で __tag__:__client_ip__ フィールドの名前を二重引用符 ("") で囲む必要があります。例: | なし |
IP アドレスが | 詳細については、「LIKE 句を使用してあいまい一致を実装する」をご参照ください。 | なし |
remote_user フィールドが空でないログ。 | | |
remote_user フィールドが空であるログ。 | | |
remote_user フィールドの値が null でないログ。 | | |
remote_user フィールドを含まないログ。 | | |
remote_user フィールドを含むログ。 | | |
city フィールドの値が Shanghai でないログ。 | 説明 中国語の文字列をクエリする場合は、インデックスを構成するときに [中国語を含む] をオンにする必要があります。詳細については、「インデックスの作成」をご参照ください。 | なし |
高度な検索例
あいまい検索
期待される検索結果
検索文
デバッグ
特定の単語を含むログ。単語は cn で始まります。
cn*region フィールドの値が cn で始まるログ。
region:cn*なし
region フィールドの値に cn* が含まれるログ。
region:"cn*"説明この検索文では、
cn*は完全な文字列です。例:ログの内容が
region:cn*,enで、デリミタがコンマ (,) の場合、SLS はログの内容をregion、cn*、およびenに分割します。検索文を使用してログを検索します。ログの内容が
region:cn*hangzhouの場合、SLS はcn*hangzhouを全体として見なすため、検索文でログを検索することはできません。
なし
特定の単語を含むログ。単語は
moziで始まり、laで終わり、moziとlaの間に 1 文字含まれます。mozi?la特定の単語を含むログ。単語は mo で始まり、la で終わり、
moとlaの間に 0 個以上の文字が含まれます。mo*la特定の単語を含むログ。単語は
mozまたはsaで始まります。moz* and sa*region フィールドの値が
haiで終わるログ。検索文ではログを見つけることができません。代わりに SQL 文で LIKE 句を使用します。詳細については、「LIKE 句を使用してあいまい一致を実装する」をご参照ください。
* | select * from log where region like '%hai'なし
message フィールドの値が
"get_time: 0.で始まるログ。SQL 分析で like 構文を使用します。
*| select message where message like '"get_time: 0.%'または、構造化プロセス言語 (SPL) の where 命令を使用してログをフィルターします。
なし
デリミタベースの検索
SLS は、指定したデリミタに基づいてログの内容を複数の単語に分割します。デフォルトのデリミタは
, '";=()[]{}?@&<>/:\n\t\rです。Delimiter設定を空のままにすると、SLS はフィールド値全体を 1 つの term として扱い、文字列全体の完全一致またはあいまい検索でのみ検索可能になります。デリミタの指定方法の詳細については、「インデックスの作成」をご参照ください。たとえば、http_user_agent フィールドの値は
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2です。[デリミタ] を空のままにすると、SLS はフィールド値を全体として見なします。
http_user_agent:Chrome検索文を使用してログを検索することはできません。[デリミタ] を
, '";=()[]{}?@&<>/:\n\t\rに設定すると、SLS はフィールド値をMozilla、5.0、Windows、NT、6.1、AppleWebKit、537.2、KHTML、like、Gecko、Chrome、192.0.2.0、Safari、および537.2に分割します。http_user_agent:Chrome検索文を使用してログを検索できます。
重要検索キーワードにデリミタが含まれている場合は、フレーズ検索を実行するか、LIKE 句を使用します。例:
フレーズ検索:
#"redo_index/1"。詳細については、「フレーズ検索」をご参照ください。LIKE 句:
* | select * from log where key like 'redo_index/1'。
期待される検索結果
検索文
デバッグ
http_user_agent フィールドの値に Chrome が含まれるログ。
http_user_agent:Chromehttp_user_agent フィールドの値に Linux と Chrome が含まれるログ。
http_user_agent:Linux and http_user_agent:Chromehttp_user_agent:"Linux Chrome"http_user_agent フィールドの値に Firefox または Chrome が含まれるログ。
http_user_agent:Firefox or http_user_agent:Chromerequest_uri フィールドの値に /request/path-2 が含まれるログ。
request_uri:/request/path-2request_uri フィールドの値が /request で始まり、/file-0 を含まないログ。
request_uri:/request* not request_uri:/file-0redo_index/1フレーズが完全に一致するログ。#"redo_index/1"* | select * from log where key like 'redo_index/1'
説明完全一致には、フレーズ検索または LIKE 句を使用できます。完全一致検索を実行すると、
redo_indexや1などの単語が一致します。なし
特殊なユースケースでのクエリ例
検索文
このオペレーターは、構文キーワードを囲むために使用されます。構文キーワードが二重引用符 ("") で囲まれている場合、そのキーワードはオペレーターではなくリテラル文字列として扱われます。フィールド指定検索では、二重引用符 (
"") で囲まれた単語は全体として見なされます。フィールド名またはフィールド値にスペース、漢字、コロン (
:)、ハイフン (-) などの特殊文字、またはandやorなどの構文キーワードが含まれている場合は、フィールド名またはフィールド値を二重引用符 ("") で囲む必要があります。たとえば、"and"は、単語 "and" をオペレーターではなく term として扱い、それを含むログを返します。SLS は次のオペレーターをサポートしています:
sort、asc、desc、group by、avg、sum、min、max、およびlimit。これらのオペレーターをキーワードとして使用する場合は、オペレーターを二重引用符 ("") で囲む必要があります。ログがデータ変換機能または Logtail プラグインを使用して処理される場合、__tag__:__client_ip__ フィールドのキーは共通キーに変換されます。ログを検索する場合は、検索文で __tag__:__client_ip__ フィールドの名前を二重引用符 (
"") で囲む必要があります。例:"__tag__:__client_ip__":192.0.2.1。__tag__:__client_ip__フィールドは SLS の予約済みフィールドです。このフィールドは、ログが収集されたホストの IP アドレスを示します。詳細については、「予約済みフィールド」をご参照ください。
期待されるクエリ結果
検索文
request methodフィールドの値にPUTが含まれるログ。フィールド名にはスペースが含まれています。"request method":PUTsystem error descriptionフィールドの値にDBが含まれるログ。フィールド名にはスペースが含まれています。"system error description":DB*regionフィールドに文字列cn*が含まれるログ。ログの内容がregion:cn*,enで、デリミタがコンマ (,) の場合、region、cn*、およびenに分割されます。region:"cn*"remote_userフィールドが空であるログ。remote_user:""Authorizationフィールドの値がBearer 12345であり、スペースが含まれているログ。"Authorization": "Bearer 12345"errorContentフィールドの値にThe body is not valid json stringが含まれ、スペースが含まれているログ。* | select * where errorContent like '%The body is not valid json string%'192.0.2.1ホストから収集されたログ。"__tag__:__client_ip__":192.0.2.1分析文
フィールド名やテーブル名などの固有名詞に、スペース、漢字、コロン (
:)、ハイフン (-) などの特殊文字、またはandやorなどの構文キーワードが含まれている場合は、分析文で固有名詞を二重引用符 ("") で囲む必要があります。特定の文字が文字列を表す場合は、分析文でその文字を一重引用符 (
'') で囲む必要があります。たとえば、'status'は status 文字列を示し、statusまたは"status"は status ログフィールドを示します。
期待されるクエリ結果
クエリ文
IP アドレスが
192.168.XX.XXに一致するログ。* | select * from log where key like '192.168.%.%'最も長いリクエスト期間の上位 10 件。
スペースを含む列名は二重引用符 ("") で囲む必要があります。
* | SELECT max(request_time,10) AS "top 10"異なるリクエストステータスに対応するログの数。
contentフィールドは JSON 型としてインデックス付けされます。詳細については、「インデックス付き JSON フィールドをクエリおよび分析する方法」をご参照ください。* | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"
json 型
サンプルログ
{
"timestamp": "2025-03-21T14:35:18Z",
"level": "ERROR",
"service": {
"name": "payment-processor",
"version": "v2.8.1",
"environment": "production"
},
"error": {
"code": 5031,
"message": "Failed to connect to third-party API",
"details": {
"endpoint": "https://api.paymentgateway.com/v3/verify",
"attempts": 3,
"last_response": {
"status_code": 504,
"headers": {
"Content-Type": "application/json",
"X-RateLimit-Limit": "100"
}
}
}
},
"user": {
"id": "usr-9a2b3c4d",
"session": {
"id": "sess-zxy987",
"device": {
"type": "mobile",
"os": "Android 14",
"network": "4G"
}
}
},
"trace": {
"correlation_id": "corr-6f5e4d3c",
"span_id": "span-00a1b2"
}
}インデックス構成
検索文を実行する前に、インデックスが構成されていることを確認してください。詳細については、「インデックスの作成」をご参照ください。インデックス構成を確認するには、次のステップを実行します。
Logstore の [クエリと分析] ページで、 を選択します。
[検索と分析] パネルで、フィールドインデックスが構成されているかどうかを確認します。
例
クエリと分析の例の詳細については、「JSON ログのクエリと分析」および「JSON ログのクエリと分析に関するよくある質問」をご参照ください。
期待されるクエリ結果 | クエリ文 |
失敗したリクエストを記録したログ | |
| |
| |