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 文を使用してフィールドを分析できることを示します。
  1. 文字列型とブール型のデータを検索します。
    • JSON のフィールドを設定する必要はありません。
    • JSON map と array は自動的に展開されます。 複数レイヤでネストされているフィールドを検索できます、各レイヤの間にはピリオド(.)で区切られます。
    class : cental*
    message.traceInfo.requestId : 92.137_1518139699935_5599
    message.param.projectName : ali-log-test-project
    message.success : true
  2. Double 型と Long 型のデータを検索します。

    JSON のフィールドを別々に設定する必要があり、array に含めることはできません。

    latency>40
    message.usedTime > 40
  3. データ型がコンビネーションされたデータを検索します。
    class : cental* and message.usedTime > 40 not message.param.projectName:ali-log-test-project