フレーズ検索は、標準のトークン化されたクエリとは異なり、ログ内のタームの正確なシーケンスに一致します。
概要
デフォルトでは、SLS はトークン化クエリを使用します。たとえば、abc def は、順序に関係なく abc と def の両方を含むすべてのログに一致します。正確なシーケンスで用語を一致させるには、フレーズ検索を使用します。
フレーズ検索は、元の文字列の文字そのものではなく、トークン化によるトークンシーケンスに一致します。 フレーズ内の文字がインデックス設定で区切り文字として設定されている場合、その文字はトークンを分割するためにのみ使用され、一致したコンテンツの一部としては扱われません。 たとえば、コンマ、角括弧、スペースがすべて区切り文字として設定されている場合、#"aa,bb"、#"[aa bb]"、および #",aa bb," はすべて同じトークンシーケンス aa、bb として解析され、同一の結果を返します。 このような文字が区切り文字として設定されていない場合、またはフィールドが異なるトークン化設定を使用している場合、結果が異なる場合があります。
フレーズ検索は次の 2 つのステップで実行されます。
SLS はまず、標準 (非フレーズ) 検索を実行します。たとえば、
#"abc def"はまず"abc def"の標準検索を実行します。説明この最初のステップは 10,000 件のログに制限されます。
次に、SLS がこれらの結果をフレーズに完全一致するようフィルタリングし、最終的な一致結果を返します。
構文
SLS Query Skill によるインテリジェントなログクエリと分析:自然言語を使用して、ローカル AI エージェントで SLS のログデータをクエリおよび分析します。
フィールド指定検索
key: #"abc def"全文検索
#"abc def"
制限事項
フレーズ検索の結果は、順次ページネーションのみをサポートします。任意のページへのジャンプはサポートされていません。
ログ分布ヒストグラムには、最終的なフレーズ検索結果ではなく、最初の標準検索の結果が表示されます。
フレーズ検索は、あいまい一致と組み合わせて使用できません。
フレーズ検索では二重引用符 ("") が必要です。
フレーズ検索ステートメントでは NOT 演算子はサポートされていません。たとえば、
not #"abc def"は無効なクエリです。分析ステートメントはフレーズ検索では使用できません。たとえば、
#"abc" | select ***はサポートされていません。クイック分析機能もフレーズ検索では利用できません。
ページネーション
ページを切り替えるたびに、新しいフレーズ検索が実行され、次の結果セットが取得されます。
各フレーズ検索では最大 10,000 件のログが処理されます。1 ページに表示されるログの件数が [ページあたりの項目数] の設定より少なくても、次のページに移動できる場合があります。これは、現在の 10,000 件のバッチ内で一致したログが [ページあたりの項目数] 未満であることを意味します。
たとえば、ログの総数が 20,000 件で、1 ページあたり 100 件の場合、フレーズ検索で 89 件しか返されなくても次のページに移動できるときは、最初の 10,000 件のログのうち一致したのが 89 件のみであることを示します。次のページに移動すると、残りの 10,000 件のログに対して 2 回目のフレーズ検索が実行されます。
例
redo_index/1を含むログをクエリします。"redo_index/1"のような非フレーズ検索では、全文インデックスを使用してキーワードを照合します。 SLS は、クエリを区切り文字 (/) で分割し、redo_indexや1のようなトークンを含むエントリを返します。 これにより、/redo_index/318/.../1/...や/redo_index/14912/.../1/...のような不正確な一致が生じます。フレーズ検索
#"redo_index/1"は、完全なフレーズredo_index/1に一致します。正確な文字列redo_index/1を含むログのみが返されます。ファイルパスフィールドには完全なセグメント/redo_index/1/が表示され、フレーズ検索が用語をそのまま保持することがわかります。
02/Marを含むログをクエリします (デバッグ)。非フレーズ検索 time_local: 02/Mar は、全文インデックスを使用してキーワードを照合します。
結果には、
time_localの値が01/Mar/2025:15:02:56のログが含まれます。日付は01/Marであり02/Marではありませんが、このエントリは一致します。これは、時刻コンポーネント15:02:56に02が含まれ、日付にMarが含まれているためです。トークンが個別に一致しています。フレーズ検索
time_local: #"02/Mar"は、完全なフレーズ02/Marに一致します。一致したログの
time_localの値は02/Mar/2025:23:59:56であり、完全一致するフレーズ02/Marを含みます。