edit-icon download-icon

クエリ構文

最終更新日: May 31, 2018

ログサービスは、クエリ条件を表現するために使用される一連のクエリ構文を提供し、ログを簡単に検索するのに役立ちます。ログサービス API の GetLogs および GetHistograms インターフェイスまたはログサービスコンソールのクエリページでクエリ条件を指定できます。このセクションでは、クエリ条件の構文について詳しく説明します。

インデックスタイプ

2 つのモードでログストアのインデックスを作成できます。

  • フルテキストインデックス:キーと値(キー、値)を区別することなく、ログの行全体が全体として照会されます。
  • キー/値インデックス:Key が指定されたときにクエリが実行されます。たとえば、 FILE:app, Type:actionなどです。このキーに含まれるすべての文字列が照会されます。

構文キーワード

ログサービスのクエリ条件では、次のキーワードがサポートされています。

名前 意味
and バイナリ演算子 query1 and query2の形式で、 query1query2のクエリ結果の共通部分を示します。単語の間に構文キーワードがない場合、単語間の関係はデフォルトでは and です。
or query1query2のクエリ結果の和集合を示すquery1 or query2の形式の二項演算子。
not query1 not query2の形式で、query1 にマッチし、query2 にマッチしない、すなわち query1–query2を示すバイナリ演算子です。 not query1 だけが存在する場合、query1 のクエリ結果を含まないログが選択されていることを示します。
(,) 左右の角かっこは、1つまたは複数のサブクエリを1つのクエリにマージして、角括弧内のクエリ優先度を向上させるために使用されます。
: キーと値のペアを照会するために使用されます。 term1:term2 は、キーと値のペアを形成します。キーまたは値にスペースが含まれている場合は、キーまたは値全体を含めるために引用符を使用する必要があります。
キーワードを共通のクエリ文字に変換します。左右の引用符で囲まれた語はすべて照会され、構文キーワードとしては使用されません。または、左と右の引用符のすべての用語は、キーと値のクエリで全体と見なされます。
* あいまいクエリーキーワード。0 または複数の文字を置き換えるために使用されます。たとえば、que*; que で始まるすべてのヒットワードが返されます。
? 1つの文字を置き換えるために使用されるあいまいクエリキーワード。例えば、 qu?ry; 全てのヒットワードは quで始まり、ryで終わり、中間の文字で始まります。
__topic__ トピックデータクエリ。新しい構文では、クエリ内で 0 個以上のトピックのデータをクエリできます。例えば、 __topic__:mytopicname
__tag__ タグキーのタグ値を照会します。たとえば、 __tag__:tagkey:tagvalueのようになります。
source たとえば、source:127.0.0.1のように、IPのデータを照会してください。
> latency > 100のように、特定の数値より大きいフィールドの値でログを照会します。
>= latency >= 100のように、特定の数値以上のフィールドの値でログを照会します。
< 特定の番号よりも小さいフィールドの値を持つログを照会します。例えば、 latency < 100.
<= latency <= 100のように、特定の数値以下のフィールドの値でログを照会します。
= latency = 100のように、特定の数値に等しいフィールドの値でログを照会します。
in 特定の範囲内のフィールドでログを照会します。中括弧([])は閉じた間隔を示すのに使用され、かっこ(())は開いた間隔を示すために使用されます。中括弧([])またはかっこ(())で 2 つの数字を囲み、数字を複数のスペースで区切ります。たとえば、latency in [100 200] または latency in (100 200]のレイテンシや(100 200)のレイテンシ。

注意:

  • 構文キーワードは大文字と小文字を区別しません。
  • 構文キーワードの優先順位は、: > " > ( ) > and not > orで降順でソートされます。
  • ログサービスは、以下のキーワードを使用する権利を有します: sort asc desc group by avg sum min max limit。次のキーワードを使用する必要がある場合は、引用符で囲みます。
  • 全文索引とキー/値索引が構成されているときに異なる単語区切り文字を持つ場合、全文問合せ方式を使用してデータを照会することはできません。
  • 数値問合せを実行するには、問合せ列のデータ型を double または long として設定する必要があります。データ型が設定されていないか、数値範囲クエリに使用される構文が正しくない場合、ログサービスはクエリ条件をフルテキストインデックスとして変換し、予期しない結果につながります。
  • 列のデータ型をテキストから数値に変更すると、変更前のデータに対しては = クエリのみがサポートされます。

クエリの例

  • a と b を同時に含むログ: a and b or a b.
  • a または b を含むログ: a or b.
  • a を含むが b を含まないログ: a not b.
  • a を含まないすべてのログ: not a.
  • a と b を含むが、c を含まないログ: a and b not c.
  • a または b を含み、c を含むログ: (a or b ) and c.
  • a または b を含み、c を含まないログ: (a or b ) not c.
  • a と b を含み、または c を含むログ: a and b or c.
  • FILE フィールドに apsara が含まれているログ: FILE:apsara.
  • FILE フィールドに apsara と shennong が含まれているログ: FILE:"apsara shennong" or FILE:apsara FILE: shennong or FILE:apsara and FILE:shennong.
  • a を含むログ: and.
  • apsara または shennong を含むFILEフィールドのログ: FILE:apsara or FILE:shennong.
  • 情報フィールドに apsara を含むログ: "file info":apsara.
  • 引用符を含むログ: \".
  • shen で始まるログ: shen*.
  • FILEフィールドの shen で始まるすべてのログ: FILE:shen*.
  • shen で始まり、ong で終わるログ: shen?ong.
  • shen と aps で始まるすべてのログ: shen* and aps*.
  • topic1 と topic2 のすべてのデータ: __topic__:topic1 or __topic__ : topic2.
  • tagkey1 の tagvalue2 のすべてのデータ: __tag__ : tagkey1 : tagvalue2.
  • 100 以上 200 未満のレイテンシですべてのデータ: latency >=100 and latency < 200 または latency in [100 200).
  • 待ち時間が 100 を超えるすべてのリクエスト: latency > 100.
  • http_referer にスパイダーを含まず、opx を含まないログ: not spider not bot not http_referer:opx.
  • 空の cdnIP フィールドを使用してログ: cdnIP:""
  • cdnIP フィールドのないログ: not cdnIP:*
  • cdnIP フィールドでログ: cdnIP:*

その他の構文

指定されたトピックまたはクロストピックのクエリ

トピックごとに、各 LogStore を 1 つ以上の部分空間に分割できます。therfhfrg クエリ中にトピックを指定すると、クエリの範囲が制限され、速度が向上する可能性があります。したがって、LogStore のセカンダリ分類要件がある場合は、topic を使用して LogStore を分割することをお勧めします。

1 つまたは複数のトピックが指定されている場合、クエリは条件を満たすトピックでのみ実行されます。ただし、トピックが指定されていない場合は、デフォルトですべてのトピックのデータが照会されます。

たとえば、異なるドメイン名でログを分類するには、topic を使用します。

topic

トピッククエリ構文:

  • すべてのトピックのデータを照会できます。クエリの構文とパラメータにトピックが指定されていない場合は、すべてのトピックのデータがクエリされます。
  • トピックごとにクエリをサポートします。クエリ構文は __topic__:topicNameです。古いモード(URL パラメータでトピックを指定)は引き続きサポートされています。
  • 複数のトピックを照会することができます。たとえば、 __topic__:topic1 or __topic__:topic2 は、Topic1 と Topic2 からのデータの結合クエリを示します。