It's hard to say what's "wrong" not knowing your data but while transaction can be sometimes useful (in some strange use cases) it's often easier, and faster to simply use stats. Mostly because transaction has loads of limitations that stats don't have. Quick glance at your search suggests that for some reason the message field is not extracted properly from your event so you're not getting two separate values in your multivalued message output field. As I said I'd go with index=... ("SENDER[" OR ("RECEIVER[" AND "POST /my-end-point*")) | rex "\[(?<id>\d+)\]" | eval request=if(searchmatch("SENDER[",message,null()) | eval response=if(searchmatch("\"RECEIVER[\" AND \"POST /my-end-point*\"",message,null()) | stats range(_time) as duration, count, values(request) as request, values(response) as response, values(_raw) as _raw by id
... View more