Kibanaのようなクエリ言語を使用して、Searchアプリで使用されるのと同じ方法でクエリ文字列をフォーマットします。
フィルタークエリの制限
カスタムフィルタークエリはSearchアプリのクエリと同じクエリ言語を使用しますが、カスタムフィルタークエリにはいくつかの追加の制限があります:
-
すべてのクエリには、少なくとも1つのフィールド名と値のペアが含まれている必要があります。(endpointHostName:endpoint-123)
-
クエリ文字列には、少なくとも1つの定義された値が含まれている必要があります。少なくとも1つの値が定義されている場合、複合クエリでアスタリスクワイルドカード(*)を使用できます。(endpointHostName:endpoint-123 AND FileName:*)
Searchアプリのクエリ構文とカスタムフィルターでの正規表現の詳細については、検索構文およびカスタムフィルタでの正規表現の使用を参照してください。
フィルタークエリ形式のヒント
クエリのパフォーマンスを向上させ、長時間の実行を避けるために、次の点を考慮してください
-
クエリ文字列の先頭に簡単な検索条件を入れてください。
-
データ量が多いフィールド(例えば、[objectRawDataStr] や [rawDataStr])は、クエリ文字列の最後に配置してください。
-
ワイルドカードを多用したり、クエリ文字列の末尾にワイルドカードを置いたりしないでください。
-
1つまたは2つの戦術、技術、および手順のみをフィルターごとに使用してください。
-
フィルターではできるだけ少ないオペレーターを使用してください。
-
[eventSubId]をフィルター条件の先頭に置いて、データセットを迅速に絞り込みます。
-
フィルタリングを簡素化し、複雑さを軽減するために、[processCmd]の代わりに[processName]を使用してください。
-
単純なサブセットパターンを複雑なパターン(例えば、複雑な正規表現や中間ワイルドカード)の前に置いてください。例: objectRawDataStr:'*(abcd -UseBasicParsing)*' AND (objectRawDataStr: '* abcd *' OR objectRawDataStr: '* efgh *') の場合、最も長いプレーンなサブストリングを抽出します。それは objectRawDataStr: '*-UseBasicParsing*' です。次に、objectRawDataStr: '*-UseBasicParsing*' を最初にチェックするフィルターを追加します。
-
完全一致の値を使用し、部分一致を避けてください。 (objectFileHashMd5: "d41d8cd98f00b204e9800998ecf8427e")