If I have fields such as:
How do I group by the host name and then select the most recent Message from each group?
I've figured out
| stats last(_time) as _time by host
but the Messages are not unique within each group, so I need to figure out how to retrieve only the latest Message to be included with each group/record in my search results.
Thank you!
You could use latest(Message)
or last(Message)
as an additional field in your stats command (e.g. | stats last(_time) as _time last(Message) as Message by host
). There is a good reference for Functions for stats in the docs.
Depending on your ultimate goal and what your input data looks like, if you're only interested in the last event for each host, you could also make use of the dedup command instead. Something like: | dedup host
You could use latest(Message)
or last(Message)
as an additional field in your stats command (e.g. | stats last(_time) as _time last(Message) as Message by host
). There is a good reference for Functions for stats in the docs.
Depending on your ultimate goal and what your input data looks like, if you're only interested in the last event for each host, you could also make use of the dedup command instead. Something like: | dedup host
That does the trick. I lacked the intuition to figure out how to include multiple fields using last(). I had tried
last(fieldA, fieldB)
and
| last(fieldA) | last(fieldB)
but had not tried the way you recommended, which works. Thanks!