first と last
first および last operator は、ソート順に対して相対的な最初と最後の結果を返します。デフォルトでは、検索結果は時系列の降順に (最も新しい結果から最も古い結果への順に) 返されます。
たとえば次の図では、いくつかの結果がデフォルトのソート順で返されています。# 列は 1 から、Time 値は最新の値から始まっています。
- 最初の結果は、# 値の 1 で表されます。この最初の結果は、最も新しい Time 値を持ちます。
- 最後の結果は、# 値の 5 で表されます。この最後の結果は、最も古い Time 値を持ちます。
制限事項
first と last はライブ ダッシュボードや継続的なクエリではサポートされません。その場合は、withtime operator を使用します (「most_recent と least_recent」を参照)。
first
返されるメッセージのデフォルトのソート順は時間の降順です。最近のものから古い順です。このため、first では時間範囲内で評価するフィールドの最新値を検索します。ただし、時間の降順以外のソート順を指定した場合は、first はクエリで定義したソート順に基づいて最初のメッセージを検索します。
返される結果にソート順が指定されていない場合 (limit 20 を使用するなど)、first は日付やリスト順に関係なく、最初のメッセージを返します。
構文
first(<field>) [as <field>] [by <field>]
ルール
- 作成されるデフォルトフィールドの名前は
_first
になります。
例
... | first(error_message) group by hostname
複数のフィールドの最初の一致を検索する場合は、as operator を使用してエイリアスを作成し、_first フィールドの名前を変更する必要があります。次の例を参照してください。
_sourceCategory=Apache/Access
| first(url) as first_url, first(status_code) as first_statuscode
last
時間範囲内で評価するフィールドの最後の値を、指定されたソート順に基づいて検索します。返されるメッセージのデフォルトの順序は時間の降順です。最近のものから古い順です。このため、last は返されたリスト内の最も古い結果です。時間の降順以外のソート順を指定した場合は、last はソート順に基づいて最後のメッセージを検索します。
構文
last(<field>) [as <field>] [by <field>]
ルール
- 作成されるデフォルトフィールドの名前は
_last
になります。
例
... | last(status_code) group by hostname
ログ メッセージ例:
Aug 2 04:06:08 : host=10.1.1.124: local/ssl2 notice mcpd[3772]: filesize=20454: diskutilization=0.4 : 01070638:5: Pool member 172.31.51.22:0 monitor status down.
ログ メッセージの例を使用したクエリ例:
disk*
| parse "diskutilization=*" as disk
| disk>0.8?1:0 as overcapacity
| last(overcapacity) by _sourceHost
| sort by _last
このクエリは用語 disk* を含むすべてのメッセージを検索して、diskutilization=value ペアをすべて parse します。次に diskutilization の値をフィールド disk に抽出します。次にその値が 80% を超えているかを判定して、ホストごとの最後の値を検索し、ディスク使用率が 80% を超えるホストのリストを効率的に生成します。
複数のフィールドの最後の一致を検索する場合は、as operator を使用してエイリアスを作成し、_last フィールドの名前を変更する必要があります。次の例を参照してください。
_sourceCategory=Apache/Access
| last(url) as last_url, last(status_code) as last_statuscode