Из логов приложения в elastic попадают записи(события), объединенные по trid (id транзакции):
{
trid: 10005333969
service: "test"
message: "Request start"
},
{
trid: 10005333969
message: "Some inner log 1"
},
...
{
trid: 10005333969
message: "Some inner log N"
},
{
trid: 10005333969
duration: 0.123
message: "Request end"
}
В первом событии есть имя сервиса (service), в последнем есть длительность запроса (duration). Не понимаю как построить агрегацию среднего времени ответа по сервису? Т.е. сначала надо все записи как-то сджоинить по trid, чтобы получить одну строку в которой будут service, duration а потом уже group by service и avg(duration), но как это в эластике - что-то пока не получается...
P.S. Пробовал это делать через logstash aggregation, но там возникли свои некие сложности по объединению кучи строк и превращение в один event, отправляемый в эластик.