こちらのサンプルログイベントメッセージを使用します。
1	[XXX] BENCHMARK : Running Start Crawl for Crawler TestCrawler2
2	[XXX] BENCHMARK : Classification complete, writing results to database mygluedatabase
3	[XXX] INFO : Crawler configured with SchemaChangePolicy {"UpdateBehavior":"UPDATE_IN_DATABASE","DeleteBehavior":"DEPRECATE_IN_DATABASE"}.
4	[XXX] INFO : Created table gluetest in database mygluedatabase
5	[XXX] BENCHMARK : Finished writing to Catalog
6	[XXX] BENCHMARK : Crawler has finished running and is in state READY
検索したい語句を""で囲むまたはそのまま入力することで、一致したログイベントメッセージを取得できます。
検索条件
BENCHMARK
または、
"BENCHMARK"
検索結果
1	[XXX] BENCHMARK : Running Start Crawl for Crawler TestCrawler2
2	[XXX] BENCHMARK : Classification complete, writing results to database mygluedatabase
5	[XXX] BENCHMARK : Finished writing to Catalog
6	[XXX] BENCHMARK : Crawler has finished running and is in state READY
""で囲むことで、スペースが存在する場合も単一文字列として認識させることが出来ます。
検索条件
"Running Start Crawl for Crawler"
検索結果
1	[XXX] BENCHMARK : Running Start Crawl for Crawler TestCrawler2
語句を複数並べて絞り込み検索を行うことも出来ます。
検索条件
BENCHMARK Crawler
または、
"BENCHMARK" "Crawler"
検索結果
1	[XXX] BENCHMARK : Running Start Crawl for Crawler TestCrawler2
6	[XXX] BENCHMARK : Crawler has finished running and is in state READY
語句の後に負符号 (-) をつけたあと、語句を指定すると検索条件から外すことができます。
検索条件
BENCHMARK - Crawler
または、
"BENCHMARK" - "Crawler"
検索結果
2	[XXX] BENCHMARK : Classification complete, writing results to database mygluedatabase
5	[XXX] BENCHMARK : Finished writing to Catalog
?を使ってORパターンマッチングを行うことも出来ます。
検索条件
?INFO ?Finished
検索結果
3	[XXX] INFO : Crawler configured with SchemaChangePolicy {"UpdateBehavior":"UPDATE_IN_DATABASE","DeleteBehavior":"DEPRECATE_IN_DATABASE"}.
4	[XXX] INFO : Created table gluetest in database mygluedatabase
5	[XXX] BENCHMARK : Finished writing to Catalog
JSON ログについて
こちらのサンプルJSONログを使用します。
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
2	{"eventType": "UpdateTrail2", "sourceIPAddress": "123.123.123.123", "arrayKey": ["value", "another value"], "objectList": [{ "name": "c", "id": 3},{"name": "d", "id": 4}], "SomeObject": null, "ThisFlag": false}
3	{"eventType": "UpdateTrail3", "sourceIPAddress": "120.0.0.1", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 500},{"name": "f", "id": 600}], "SomeObject": "a", "ThisFlag": true}
4	{"eventType": "UpdateTrail4", "sourceIPAddress": "120.0.0.2", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 501},{"name": "f", "id": 601}], "SomeObject": "b", "ThisFlag": true}
{}で囲み、keyに$をつけて検索します。
{ $.eventType = "UpdateTrail" }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
~ではない場合の条件は=に!をつけることで可能です。
{ $.sourceIPAddress != 123.123.* }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
3	{"eventType": "UpdateTrail3", "sourceIPAddress": "120.0.0.1", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 500},{"name": "f", "id": 600}], "SomeObject": "a", "ThisFlag": true}
4	{"eventType": "UpdateTrail4", "sourceIPAddress": "120.0.0.2", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 501},{"name": "f", "id": 601}], "SomeObject": "b", "ThisFlag": true}
リスト内の検索も可能です。この場合は2のJSONが検索に引っかかります。
{ $.objectList[0].id = 3 }
検索結果
2	{"eventType": "UpdateTrail2", "sourceIPAddress": "123.123.123.123", "arrayKey": ["value", "another value"], "objectList": [{ "name": "c", "id": 3},{"name": "d", "id": 4}], "SomeObject": null, "ThisFlag": false}
数値検索では、>、<、>=、<=、=、 != 演算子を使用することが出来ます。
{ $.objectList[0].id < 5 }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
2	{"eventType": "UpdateTrail2", "sourceIPAddress": "123.123.123.123", "arrayKey": ["value", "another value"], "objectList": [{ "name": "c", "id": 3},{"name": "d", "id": 4}], "SomeObject": null, "ThisFlag": false}
数字ではアスタリスクも使用することが出来ます。
{ $.objectList[0].id = 5* }
検索結果
3	{"eventType": "UpdateTrail3", "sourceIPAddress": "120.0.0.1", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 500},{"name": "f", "id": 600}], "SomeObject": "a", "ThisFlag": true}
4	{"eventType": "UpdateTrail4", "sourceIPAddress": "120.0.0.2", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 501},{"name": "f", "id": 601}], "SomeObject": "b", "ThisFlag": true}
値がNULLの場合はIS NULLで引っ掛けることが出来ます。
{ $.SomeObject IS NULL }
*小文字でもOK 
{ $.SomeObject is null }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
2	{"eventType": "UpdateTrail2", "sourceIPAddress": "123.123.123.123", "arrayKey": ["value", "another value"], "objectList": [{ "name": "c", "id": 3},{"name": "d", "id": 4}], "SomeObject": null, "ThisFlag": false}
値が真偽値の場合はIS TRUE または IS FALSEで引っ掛けることが出来ます。
{ $.ThisFlag IS TRUE }
小文字でもOK 
{ $.ThisFlag is true }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
3	{"eventType": "UpdateTrail3", "sourceIPAddress": "120.0.0.1", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 500},{"name": "f", "id": 600}], "SomeObject": "a", "ThisFlag": true}
4	{"eventType": "UpdateTrail4", "sourceIPAddress": "120.0.0.2", "arrayKey": ["value", "another value"], "objectList": [{ "name": "e", "id": 501},{"name": "f", "id": 601}], "SomeObject": "b", "ThisFlag": true}
JSONの複合条件について
括弧()、OR (||) と AND (&&) を使用して複合式も可能です。
構文は演算子の標準の順序に従い、() > && > || となります。
OR (||) 条件
{ ( $.SomeObject IS NULL ) || ( $.ThisFlag IS FALSE ) }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
2	{"eventType": "UpdateTrail2", "sourceIPAddress": "123.123.123.123", "arrayKey": ["value", "another value"], "objectList": [{ "name": "c", "id": 3},{"name": "d", "id": 4}], "SomeObject": null, "ThisFlag": false}
AND (&&)条件
{ ( $.SomeObject IS NULL ) && ( $.ThisFlag IS TRUE ) }
検索結果
1	{"eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": ["value", "another value"], "objectList": [{ "name": "a", "id": 1},{"name": "b", "id": 2}], "SomeObject": null, "ThisFlag": true}
スペース区切りで出力されるログから値を取得する
スペース区切りの項目ごとが何を示しているのか指定し、
その項目ごとに条件を指定して、値を取得することができます。
こちらのサンプルログを使用します。
1   frank   10/Oct/2000:13:25:15 -0700  GET /apache_pb.gif HTTP/1.0 200 1534    127.0.0.1   -
2   frank   10/Oct/2000:13:35:22 -0700  GET /apache_pb.gif HTTP/1.0 500 5324    127.0.0.1   -
3   frank   10/Oct/2000:13:50:35 -0700  GET /apache_pb.gif HTTP/1.0 200 4355    127.0.0.1   -
4   frank   10/Oct/2000:13:50:40 -0700  GET /apache_pb.gif HTTP/1.0 401 5423    127.0.0.1   -
フィールド数が不明な場合は、省略符号 (…) を使用した省略通知を使用できます。
前方を省略した検索条件
[..., status_code, bytes]
検索結果
イベント番号	$1	$2	$3	$4	$5	$6	$7	$8	$9	$bytes	$status_code
1	127.0.0.1	-	frank	10/Oct/2000:13:25:15 -0700	GET /apache_pb.gif HTTP/1.0	1534	200
2	127.0.0.1	-	frank	10/Oct/2000:13:35:22 -0700	GET /apache_pb.gif HTTP/1.0	5324	500
3	127.0.0.1	-	frank	10/Oct/2000:13:50:35 -0700	GET /apache_pb.gif HTTP/1.0	4355	200
4	127.0.0.1	-	frank	10/Oct/2000:13:50:40 -0700	GET /apache_pb.gif HTTP/1.0	5423	401
間を省略した検索条件
[ip, user, ..., status_code, bytes]
検索結果
イベント番号	$3	$4	$5	$6	$7	$8	$9	$bytes	$ip	$status_code	$user
1	frank	10/Oct/2000:13:25:15 -0700	GET /apache_pb.gif HTTP/1.0	1534	127.0.0.1	200	-
2	frank	10/Oct/2000:13:35:22 -0700	GET /apache_pb.gif HTTP/1.0	5324	127.0.0.1	500	-
3	frank	10/Oct/2000:13:50:35 -0700	GET /apache_pb.gif HTTP/1.0	4355	127.0.0.1	200	-
4	frank	10/Oct/2000:13:50:40 -0700	GET /apache_pb.gif HTTP/1.0	5423	127.0.0.1	401	-
後方を省略した検索条件
[ip, user, ...]
検索結果
イベント番号	$3	$4	$5	$6	$7	$ip	$user
1	frank	10/Oct/2000:13:25:15 -0700	GET /apache_pb.gif HTTP/1.0	200	1534	127.0.0.1	-
2	frank	10/Oct/2000:13:35:22 -0700	GET /apache_pb.gif HTTP/1.0	500	5324	127.0.0.1	-
3	frank	10/Oct/2000:13:50:35 -0700	GET /apache_pb.gif HTTP/1.0	200	4355	127.0.0.1	-
4	frank	10/Oct/2000:13:50:40 -0700	GET /apache_pb.gif HTTP/1.0	401	5423	127.0.0.1	-
条件を指定して検索することも出来ます。
>、<、>=、<=、=,  != 演算子やアスタリスク、OR (||) と AND (&&)も使用することが出来ます。
status_codeが200である場合の検索条件
[ip, user, username, timestamp, request, status_code = 200, bytes]
検索結果
1	1534	127.0.0.1	GET /apache_pb.gif HTTP/1.0	200	10/Oct/2000:13:25:15 -0700	-	frank
3	4355	127.0.0.1	GET /apache_pb.gif HTTP/1.0	200	10/Oct/2000:13:50:35 -0700	-	frank
こちらはOR (||) を試しています。
status_codeが200、または500である場合の検索条件
[ip, user, username, timestamp, request, status_code = 200 || status_code = 500, bytes]
検索結果
1	1534	127.0.0.1	GET /apache_pb.gif HTTP/1.0	200	10/Oct/2000:13:25:15 -0700	-	frank
2	5324	127.0.0.1	GET /apache_pb.gif HTTP/1.0	500	10/Oct/2000:13:35:22 -0700	-	frank
3	4355	127.0.0.1	GET /apache_pb.gif HTTP/1.0	200	10/Oct/2000:13:50:35 -0700	-	frank
