Log Service を使用すると、収集したログの前文または一部のフィールドにインデックスを設定できます。 ログの全文にインデックスを設定した場合、このログの検索で使用される値はログ全体の内容です。 ログの一部のフィールドにインデックスを設定した場合、検索で使用される各 Key のデータ型を設定できます。
データ型
次の表に、サポートされているインデックスの種類を示します。
検索タイプ | インデックスタイプ | 説明 | 例 |
---|---|---|---|
基本検索 | text | 検索でキーワード + あいまい一致をサポートするテキスト型を示します。 | uri:"login*" method:"post"
|
long | 間隔検索をサポートする数値型を示します。 | status>200, status in [200, 500]
|
|
double | 浮動小数点数をサポートする数値型を示します。 | price>28.95, t in [20.0, 37]
|
|
コンビネーション検索 | JSON | インデックスがネスとされた検索をサポートする JSON フィールドであることを示します。 フィールド型はデフォルトでテキスト型となります。 a . b などのパス形式を使用して、要素 'a'の下の要素 'b'に Text 、Long、または Double 型のインデックスを設定できます。 フィールド型は、設定したインデックス型によって決まります。 | level0.key>29.95 level0.key2:"action"
|
フルテキスト | ログの全文がテキストとして検索されることを示します。 | error and "login fail"
|
例
次のログには、時間とその他の 4 つの key が含まれています。
No. | Key | データ型 |
---|---|---|
0 | time | - |
1 | class | text |
2 | status | long |
3 | latency | double |
4 | message | json |
0. time:2018-01-01 12:00:00
1. class:central-log
2. status:200
3. latency:68.75
4. message:
{
"methodName": "getProjectInfo",
"success": true,
"remoteAddress": "1.1.1.1:11111",
"usedTime": 48,
"param": {
"projectName": "ali-log-test-project",
"requestId": "d3f0c96a-51b0-4166-a850-f4175dde7323"
},
"result": {
"message": "successful",
"code": "200",
"data": {
"clusterRegion": "ap-southeast-1",
"ProjectName": "ali-log-test-project",
"CreateTime": "2017-06-08 20:22:41"
},
"success": true
}
}
次のようにログのインデックスを設定できます。
図 1. インデックスの設定

上図では:
- ①は、このフィールドのインデックス型が JSON であり、フィールド内の文字列型とブール型のすべてのデータを検索できることを示します。
- ②は、このフィールドのインデックス型が Long で、フィールド内の Long 型のデータを検索できることを示します。
- ③は、SQL 文を使用してフィールドを分析できることを示します。
- 文字列型とブール型のデータを検索します。
- JSON のフィールドを設定する必要はありません。
- JSON map と array は自動的に展開されます。 複数レイヤでネストされているフィールドを検索できます、各レイヤの間にはピリオド(.)で区切られます。
class : cental* message.traceInfo.requestId : 92.137_1518139699935_5599 message.param.projectName : ali-log-test-project message.success : true
- Double 型と Long 型のデータを検索します。
JSON のフィールドを別々に設定する必要があり、array に含めることはできません。
latency>40 message.usedTime > 40
- データ型がコンビネーションされたデータを検索します。
class : cental* and message.usedTime > 40 not message.param.projectName:ali-log-test-project