インデックスを作成する際に、フィールドのデータ型を text、long、double、または JSON に設定できます。このトピックでは、フィールドのデータ型について説明し、構成例を示します。
データ型の概要
コンソールでインデックスを作成すると、Simple Log Service はプレビューデータの最初のログエントリに基づいてフィールドインデックスを自動的に生成します。フィールドインデックスをカスタマイズすることもできます。
Simple Log Service は、次のデータの型を提供します。要件に基づいてデータの型を選択できます:
text、long、および double 型:
文字列型のフィールドをクエリおよび分析する場合は、インデックスを作成する際にフィールドのデータ型を text に設定し、フィールドに対して分析を有効にする必要があります。
フィールドのデータの型を long または double に設定した場合にのみ、数値範囲を使用してフィールドの値をクエリできます。フィールドのデータの型を long または double に設定した場合、アスタリスク (*) または疑問符 (?) を使用してフィールドをクエリすることはできません。ワイルドカード文字は、あいまい一致を実行するために使用されます。
フィールドの値が整数の場合、フィールドのデータ型を long に設定します。
フィールドの値が浮動小数点数の場合は、フィールドのデータ型を double に設定します。そうでない場合、フィールドをクエリすることはできません。
フィールドのデータ型を long または double に設定したが、フィールドの値が文字列の場合、フィールドをクエリすることはできません。
重要フィールドの値が無効な数値の場合、not key > -1000000 検索文を使用してフィールドをクエリできます。この文は、フィールドの値が無効な数値であるログを返します。-1000000 は、ログ内のフィールドの最小の有効な数値以下の有効な数値に置き換えることができます。
JSON 型: フィールドの値が JSON 型の場合、インデックスを作成する際にフィールドのデータ型を JSON に設定できます。
JSON オブジェクト内のフィールドのデータの型は、フィールド値に基づいて long、double、または text に設定し、そのフィールドの分析機能を有効にすることができます。分析機能を有効にすると、Simple Log Service でそのフィールドのクエリと分析が可能になります。
[JSON フィールド内のすべてのテキストフィールドを自動的にインデックス化] を選択すると、JSON オブジェクト内の text 型のすべてのフィールドのインデックスが自動的に作成されます。インデックスが作成されると、インデックストラフィックが生成されます。

部分的に有効な JSON 形式のデータの場合、Simple Log Service はデータの有効な部分のみを解析できます。
次の例は、不完全な JSON ログを示しています。Simple Log Service は、content.remote_addr、content.request.request_length、および content.request.request_method フィールドを解析できます。
content: { remote_addr:"192.0.2.0" request: { request_length:"73" request_method:"GE重要JSON オブジェクトのリーフノードのインデックスを作成できます。リーフノードを含む子ノードのインデックスを作成することはできません。
値が JSON 配列であるフィールド、または JSON 配列内のフィールドのインデックスを作成することはできません。
フィールドの値がブール値型の場合、インデックスを作成する際にフィールドのデータ型を text に設定できます。
クエリ文は
検索文|分析文のフォーマットを使用します。分析文では、フィールド名を二重引用符 ("") で、文字列を一重引用符 ('') で囲む必要があります。
参照
JSON ログのクエリと分析に関するシナリオと FAQ については、「JSON ログのクエリと分析に関する FAQ」をご参照ください。FAQ には、インデックスの作成方法、インデックス付き JSON フィールドのクエリと分析方法、JSON 関数の使用方法、JSON 配列の分析方法に関する情報が含まれています。
JSON ログのクエリと分析に関する構成と手順については、「JSON ログのクエリと分析」をご参照ください。
クエリおよび分析する JSON ログのデータ量が小さい場合は、JSON リーフノードのインデックスを作成する必要はありません。この場合、JSON 関数を使用してログをクエリおよび分析できます。特定のシナリオでは、クエリと分析に JSON 関数のみを使用できます。JSON 関数の使用方法については、「JSON 関数はいつ使用する必要がありますか?」をご参照ください。JSON 関数の説明と例については、「JSON 関数」をご参照ください。
手順
Simple Log Service コンソールでインデックスを作成します。詳細については、「インデックスの作成」をご参照ください。
インデックスを作成する際に、フィールドのデータ型を選択します。
text、long、および double 型
ログの例

インデックスの構成

クエリの文の例
リクエスト時間が 60 より大きいログをクエリします:
request_time > 60。リクエスト時間が 60 以上 200 未満のログをクエリします:
request_time in [60 200)またはrequest_time >= 60 and request_time < 200。リクエストステータスが 200 のログをクエリします:
status = 200。GET リクエストではないログをクエリします:
not request_method : GET。"cn" で始まるログをクエリします:
cn*。クライアントの分布に関する統計を収集します:
* | SELECT ip_to_province(client_ip) as province, count(*) AS pv GROUP BY province ORDER BY pv。
JSON 型
ログの例
次の図は、JSON ログの例を示しています。ログには、class、latency、status、および info フィールドと、Simple Log Service の予約済みフィールドが含まれています。info フィールドの値は、複数レイヤーを含む JSON オブジェクトです。

インデックスの構成

以下に詳細を示します。
IP および data フィールドの値は JSON 配列です。したがって、IP または data フィールドのインデックスを作成することはできず、これらのフィールドを使用してデータをクエリまたは分析することもできません。
region および CreateTime フィールドは JSON 配列内にあります。したがって、region または CreateTime フィールドのインデックスを作成することはできず、これらのフィールドを使用してデータをクエリまたは分析することもできません。
クエリの文の例
usedTime フィールドの値が 60 より大きいログをクエリします:
info.usedTime > 60。success フィールドの値が true であるログをクエリします:
info.success : true。usedTime フィールドの値が 60 より大きく、projectName フィールドの値が project01 ではないログをクエリします:
info.usedTime > 60 not info.param.projectName : project01。プロジェクト情報を取得するために必要な平均時間を計算します:
methodName = getProjectInfo | SELECT avg("info.usedTime") AS avg_time。