分析データの選択したフィールドは「分析」されます。分析は、反転インデックスでの使用に適した個々の用語にテキストブロックをトークン化(分割)することと、検索を向上させるためのそれらの用語を標準形式に正規化することから構成されます。分析対象フィールドと分析対象外フィールドでは、ADQL 比較演算子 の動作は異なります。分析対象フィールドに対してクエリを作成するには、トークンの作成方法に関するいくつかの概念を理解する必要があります。
分析対象フィールドの大文字はすべて小文字に変換され、トークンが作成されます。
区切り文字やその他の要因(キャメルケースの用語など)も、文字列のトークン化方法に影響します。"myname@company.com" などの文字列の場合、"@" は区切り文字であり、したがって、myname と company.com は 2 つの別個のトークンです。さらに、company.com も 2 つの別個のトークンです。英数字以外の文字はすべて区切り文字であることに注意してください。VicePresident
などのキャメルケースを使用する用語は、用語のキャメルケースの性質の識別に基づいて個別のトークンにトークン化され、トークンが生成されます(Vice
および President
と、VicePresident
)。
<VicePresident:SalesAndMarketing> - EMEAAustraliaUSA94107
のような文字列の例の場合、生成されるトークンには次のものが含まれます。
- vicepresident
- vice
- president
- salesandmarketing
- sales
- and
- marketing
- emeaaustraliausa94107
- emeaaustraliausa
- emea
- australia
- usa
- 94107
Analytics 分析対象フィールド
分析イベントの分析対象フィールドは次のとおりです。
- Logs:メッセージ
- Transactions:エラーとエラーの詳細
- Mobile:スタックトレース
分析対象フィールドに対するクエリ
LIKE 演算子を使用して、ログのメッセージフィールドなどの分析対象フィールドに対してフルテキスト検索を実行できます。詳細については、比較演算子を参照してください。
分析対象フィールドでは、REGEXP 演算子は分析対象トークンと処理対象トークンにのみ正確に一致するため、メッセージ全体に対してクエリを実行することはできません。
次のログメッセージについて考えてみます。
このログメッセージでは、"@" がデリミタであるため、myname と company.com は 2 つの個別のトークンです。このようなログメッセージで電子メールアドレスに基づいて結果を検索するには、トークンをまたいで検索する必要があります。
myname と company.com が 2 つの別個のトークンであるため、REGEXP を使用した次のようなクエリは fail となります。
LIKE 演算子 はデリミタの影響を受けません。そのため、LIKE 演算子を使用した代替のクエリがより良い選択肢になります。
また、ワイルドカードはトークン全体に対して動作するため、クエリでワイルドカードを使用することもできます。
分析対象フィールドに対するクエリの例
次の分析ログイベントを検索します。
次のクエリの結果に注目してください。
クエリ | 結果 |
---|
SELECT * FROM logs WHERE sourceType='yourLogFile' AND message REGEXP 'illegal.+user' | クエリ文字列が複数のトークンにまたがっているため、サンプル内のどのログイベントとも一致しません。このようなインスタンスには LIKE を使用します。 |
SELECT * FROM logs WHERE sourceType='yourLogFile' AND message REGEXP 'illegal.*' | 最初の 2 つのログイベントに一致します。 |
SELECT * FROM logs WHERE sourceType='yourLogFile' AND message REGEXP 'Failed*' | トークンには小文字の「failed」しかないため、サンプル内のどのログイベントとも一致しません。 |
文字列を検索するには:javaIOException
クエリ |
---|
SELECT * FROM transactions WHERE application = 'yourApp' AND segments.errorList.errorCode REGEXP 'java[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]' |