すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:クエリ文字列の構文

最終更新日:Nov 09, 2025

クエリ文字列の構文は、Simple Log Service (SLS) ドメイン固有言語 (DSL) の特徴です。この構文を使用して、データをすばやくフィルターし、条件付きステートメントを簡素化できます。この Topic では、クエリ文字列の一般的な構文ルールについて説明します。

関数リスト

クエリ文字列の構文は、次の関数で使用できます。

タイプ

関数

シナリオ

イベントチェック関数

e_search

クエリ文字列を使用して、イベントのフィールド値が特定の条件を満たしているかどうかを確認します。

リソース関数

res_log_logstore_pull

Logstore からデータを取得し、テーブルとして返します。クエリ文字列を使用して、フィルター用のブラックリストとホワイトリストを設定します。

res_rds_mysql

RDS for MySQL データベースからデータを取得し、テーブルとして返します。クエリ文字列を使用して、フィルター用のブラックリストとホワイトリストを設定します。

特徴の概要

次の表に、フィールド検索と全文検索をサポートする検索機能を示します。

特徴

フィールド検索

全文検索

部分文字列検索

サポートされています

サポートされています

ワイルドカード検索 (*?)

サポートされています

サポートされています

完全一致検索

サポートされています

サポートされていません

正規表現検索

サポートされています

サポートされていません

数値範囲検索

サポートされています

サポートされていません

数値比較

サポートされています

サポートされていません

論理演算子 (and, or, not) とその組み合わせ

サポートされています

サポートされています

文字のエスケープ

クエリ文字列の構文では、アスタリスク (*) やバックスラッシュ (\) などの特殊文字をエスケープする必要があります。

  • フィールド名のエスケープ

    フィールド名を二重引用符 ("") で囲まないでください。フィールド名に特殊文字が含まれている場合は、バックスラッシュ (\) でエスケープする必要があります。例:

    • \*\(1+1\)\?: abc: 特殊文字をバックスラッシュ (\) でエスケープします。

    • __tag__\:__container_name__: abc: 特殊文字をバックスラッシュ (\) でエスケープします。

    • Chinese_Field: abc: 中国語の文字をエスケープする必要はありません。

    • "content": abc: 無効な定義です。フィールド名を二重引用符 ("") で囲まないでください。

  • 検索値のエスケープ

    • 値に二重引用符 ("") またはバックスラッシュ (\) が含まれている場合は、バックスラッシュ (\) でエスケープする必要があります。例: content: "abc\"xy\\z"

      説明

      検索値は二重引用符 ("") でのみ囲むことができます。外側の文字列を囲むには一重引用符 ('') を使用し、内側の検索値を囲むには二重引用符 ("") を使用します。たとえば、e_search("domain: '/url/test.jsp'") は正しくありません。正しいフォーマットは e_search('domain: "/url/test.jsp"') です。

    • アスタリスク (*) または疑問符 (?) を検索する場合は、バックスラッシュ (\) でエスケープする必要があります。そうしないと、文字はワイルドカード文字として扱われます。

    • 値に中国語の文字、英字、数字、アンダースコア (_)、ハイフン (-)、アスタリスク (*)、または疑問符 (?) のみが含まれている場合は、二重引用符 ("") で囲む必要はありません。それ以外の場合は、値を二重引用符 ("") で囲む必要があります。例:

      • status: "\*\?()[]:=": 値を二重引用符 ("") で囲み、アスタリスク (*) と疑問符 (?) をバックスラッシュ (\) でエスケープします。他の文字をエスケープする必要はありません。

      • content: ()[]:=: 無効な定義です。値は二重引用符 ("") で囲む必要があります。

      • status: active\*teststatus: active\?test: フィールド値には、英字、アスタリスク (*)、および疑問符 (?) のみが含まれます。この場合、アスタリスク (*) または疑問符 (?) のみをエスケープする必要があります。値を二重引用符 ("") で囲む必要はありません。

部分文字列検索

  • 全文検索

    すべてのフィールドで部分文字列を検索します。

    • 構文

      e_search('substring')
      • e_search('"fault"'): 中国語の部分文字列を検索します。

      • e_search('"active error"'): スペースを含む完全な部分文字列を検索します。

      • e_search('active error'): 複数の部分文字列を検索します。部分文字列の間では、デフォルトで OR 演算子が使用されます。

  • フィールド検索

    特定のフィールドで部分文字列を検索します。

    • 構文

      e_search('...')
      • e_search('status: active'): 部分文字列検索を実行します。

      • e_search('author: "john smith"'): スペースを含む部分文字列を検索します。

      説明

      e_search('field: active error')field:active OR "error" と同等です。このクエリは、field フィールドで "active" を検索するか、"error" の全文検索を実行します。

ワイルドカード検索

アスタリスク (*) は 0 文字以上を表します。疑問符 (?) は 1 文字を表します。中国語の文字などのワイド文字を表すこともできます。

  • 全文検索

    すべてのフィールドで部分文字列を検索します。

    • 構文

      e_search('substring')
      • e_search('active*test'): 0 文字以上に一致します。文字列にアスタリスク (*) が含まれているため、二重引用符 ("") で囲む必要はありません。

      • e_search('occurs*fault'): 0 文字以上に一致します。occurs faultoccurs critical fault に一致します。

      • e_search('active?good'): 1 文字に一致します。文字列に疑問符 (?) が含まれているため、二重引用符 ("") で囲む必要はありません。

      • e_search('ac*tive?good'): パターンマッチを実行します。

      • e_search('ac*tive??go*od'): 複数のワイルドカードを一緒に使用できます。

  • フィールド検索

    特定のフィールドで部分文字列を検索します。

    • 構文

      e_search('field_name:substring')
      • e_search('status: active*test'): 0 文字以上に一致します。

      • e_search('status: active?good'): 1 文字に一致します。

完全一致

完全一致では、フィールド値が最初から最後まで完全に一致する必要があります。

  • 構文

    e_search('field_name==exact_match_string')
    • e_search('author== "john smith"'): author フィールドの値が john smith と完全に一致します。

    • e_search('status== ac*tive?good'): この演算子はワイルドカード文字と一緒に使用できます。

正規表現一致

正規表現一致は、ワイルドカード一致よりも強力な一致メソッドです。

  • 構文

    e_search('field_name~=regular_expression_string')
    説明
    • 正規表現にはバックスラッシュ (\) を含めることができるため、r を使用してエスケープを防ぐことができます。

    • デフォルトでは、部分一致が実行されます。完全一致の場合は、式の先頭に ^ を、末尾に $ を追加できます。

    • e_search('status~= "\d+"'): status フィールドの値に数字が含まれています。

    • e_search('status~= "^\d+$"'): status フィールドの値は数値です。

数値比較

数値を比較できます。

  • 直接数値比較

    比較には >>==<<= を使用できます。

    e_search('age >= 18')  #  >=18
    e_search('age > 18')   #  > 18
    e_search('age = 18')   #  = 18
    e_search('age <= 18')  #  <=18
    e_search('age < 18')   #  < 18
  • 数値範囲の比較

    閉区間を使用できます。アスタリスク (*) を使用して、開いた境界を示します。

    e_search('count: [100, 200]') # >=100 かつ  <=200
    e_search('count: [*, 200]')   # <=200
    e_search('count: [200, *]')   # >=200

論理関係

検索間の論理関係がサポートされています。括弧 () を使用してネストすることもできます。

論理関係

キーワード

AND

andAND&& など。キーワードでは大文字と小文字は区別されません。

OR

orOR など。キーワードでは大文字と小文字は区別されません。

NOT

notNOT! など。キーワードでは大文字と小文字は区別されません。

例:

e_search('abc OR xyz')    # 関係演算子では大文字と小文字は区別されません。
e_search('abc and (xyz or zzz)')
e_search('abc and not (xyz and not zzz)')
e_search('abc && xyz')    # and
e_search('abc || xyz')    # or
e_search('abc || !xyz')   # or not

部分文字列一致は、論理関係もサポートします:

e_search('field: (abc OR xyz)')      # フィールドに abc または xyz が含まれています。
e_search('field: (abc OR not xyz)')  # フィールドに abc が含まれているか、xyz が含まれていません。
e_search('field: (abc && !xyz)')     # フィールドに abc が含まれており、xyz は含まれていません。

フィールドチェック

クエリ文字列を使用してフィールドをチェックできます。

  • e_search('field: *'): フィールドが存在します。

  • e_search('not field:*'): フィールドが存在しません。

  • e_search('not field:""'): フィールドが存在しません。

  • e_search('field: "?"'): フィールドが存在し、その値は空ではありません。

  • e_search('field==""'): フィールドが存在し、その値は空です。

  • e_search('field~=".+"'): フィールドが存在し、その値は空ではありません。

  • e_search('not field~=".+"'): フィールドが存在しないか、その値が空です。

  • e_search('not field==""'): フィールドが存在しないか、その値が空ではありません。