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

インデックスタイプ

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

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

構文キーワード

ログサービスのクエリ条件では、次のキーワードがサポートされています。
名前名前 説明
and バイナリ演算子 。 query1 and query2 の形式で、 query1 と query2 のクエリ結果の共通部分を示します。 単語の間に構文キーワードがない場合、単語間の関係はデフォルトでは and です。
or バイナリ演算子 。 形式:query1 or query2 query1 or query2 のクエリ結果の和集合を示す query1query2 の形式の二項演算子。
not バイナリ演算子 。 query1 not query2 の形式で、 query1 にマッチし、 query2 にマッチしない、すなわち query1–query2 を示すバイナリ演算子です。 not query1 だけが存在する場合、query1 のクエリ結果を含まないログが選択されていることを示します。
( , ) 左右の角かっこは、1つまたは複数のサブクエリを1つのクエリにマージして、角括弧内のクエリ優先度を向上させるために使用されます。
: キーと値のペアを照会するために使用されます。term1:term2 は、キーと値のペアを形成します。 キーまたは値に スペースが含まれている場合は、キーまたは値全体を含めるために引用符を使用する必要があります。
キーワードを共通のクエリ文字に変換します。 左右の引用符で囲まれた語はすべて照会され、構文キーワードとしては使用されません。 または、左と右の引用符のすべての用語は、 キーと値のクエリで全体と見なされます。
\ エスケープ文字。 引用符をエスケープするために使用します。 エスケープされた引用符はシンボル自体を示し、 "\""のようにエスケープ文字として使用することはできません。
| パイプライン演算子は、以前の計算に基づいてより多くの計算を示します。たとえば、query1 | timeslice 1h | count。
timeslice time-slice 演算子は、データが全体としてどのくらい計算されるかを示します。 Timeslice 1h、1m、1s はそれぞれ 1 時間、1 分、1 秒を示します。 たとえば、query1 | timeslice1h | count はクエリのクエリ条件を表し、1 時間で割った合計時間に戻ります。
count count 演算子は、ログ行の数を示します。
* あいまいクエリーキーワード。 0 または複数の文字を置き換えるために使用されます。 たとえば、que*のクエリ結果では、queで始まるすべてのヒットワードが返されます。
およそ 100 のクエリの結果が返されます。
? あいまいクエリキーワード。 1 つの文字を置き換えるために使用されます。 例えば、 qu? ry; 全てのヒットワードはqu で始まり、ry で終わり、中間の文字で始まります。
__topic__ トピックデータクエリ。 新しい構文では、クエリ内で 0 個以上のトピックのデータを クエリできます。 例えば、 __topic__:mytopicname
__tag__ タグキーのタグ値を照会します。 たとえば、__tag__:tagkey:tagvalue のようになります。
Source IP のデータをクエリします。 例えば、source:127.0.0.1
> 特定の数値より大きいフィールドの値でログを照会します。 例えば、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 として設定する必要があります。 データ型が設定されていないか、数値範囲クエリに使用される構文が正しくない場合、ログサービスはクエリ条件をフルテキストインデックスとして変換し、予期しない結果につながります。
  • 列のデータ型をテキストから数値に変更すると、変更前のデータに対しては = クエリのみがサポートされます。

クエリの例

  1. a と b を同時に含むログ: a and b or a b
  2. a または b を含むログ: a or b
  3. a を含むが b を含まないログ: a not b
  4. a を含まないすべてのログ: not a
  5. a と b を含むが、c を含まないログ: a and b not c
  6. a または b を含み、c を含むログ: (a or b ) and c
  7. a または b を含み、c を含まないログ: (a or b ) not c
  8. a と b を含み、または c を含むログ: a and b or c
  9. FILE フィールドに apsara が含まれているログ:FILE:apsara
  10. FILE フィールドに apsara と shennong が含まれているログ:FILE:"apsara shennong" orFILE:apsara FILE: shennongorFILE:apsara and FILE:shennong。
  11. and を含むログ:and
  12. apsara または shennong を含むFILEフィールドのログ:FILE:apsara or FILE:shennong.
  13. 情報フィールドに apsara を含むログ:"file info":apsara
  14. 引用符を含むログ:\"
  15. shen で始まるログ: shen*
  16. FILEフィールドの shen で始まるすべてのログ:FILE:shen*
  17. shen で始まり、ong で終わるログ: shen? ong。
  18. shen と aps で始まるすべてのログ:shen* and aps*
  19. aps で始まるすべてのログを20分ごとにクエリ:shen*| timeslice 20m | count
  20. topic1 と topic2 のすべてのデータ: __topic__:topic1 or __topic__ : topic2
  21. tagkey1 の tagvalue2 のすべてのデータ: __tag__ : tagkey1 : tagvalue2
  22. 100 以上 200 未満のレイテンシですべてのデータ:latency >=100 and latency < 200 or latency in [100 200)
  23. 待ち時間が 100 を超えるすべてのリクエスト: latency > 100
  24. http_referer にスパイダーを含まず、opx を含まないログ:not spider not bot not http_referer:opx.
  25. 空の cdnIP フィールドを使用してログ:cdnIP:"".
  26. cdnIP フィールドのないログ:not cdnIP:*.
  27. cdnIP フィールドのあるログ:cdnIP:*.

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

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

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

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

図 1. ログトピック


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

ファジー検索

ログサービスはファジー検索をサポートしています。 64文字以内の単語を指定し、*などの ファジー検索キーワードを単語の文中または後尾に追加します。 100 件の適格な単語が検索され、その間に 100 語を含むすべてのログが返されます。

制限
  • クエリログが*または?で始めることができない場合は、接頭辞を指定する必要があります。
  • 特定の単語を正確にすると、より正確な結果が得られます。
  • ファジー検索を使用して 64 文字を超える単語を検索することはできません。 64文字以下の単語を指定することをお勧めします。