This is how it looks in the log event : 2026-04-06 XX:XX:XX.XXX, ID="<RECORD_ID>", DateCreated="2026-04-06 XX:XX:XX.XXX", ContactId="<CONTACT_ID>", DNIS="<TFN>", ANI="<CALLER_NUMBER>", ApiLogs="[ {\"request\":\"APINAME1\",\"statusCode\":\"200\"}, {\"request\":\"APINAME2\",\"statusCode\":\"200\"}, {\"request\":\"APINAME3\",\"statusCode\":\"200\"} ]" This is how current query looks : index=XXXX source=XXXX sourcetype=XXXX | rex field=_raw "ContactId=\"(?<ContactId>[^\"]+)\"" | rex field=_raw "DNIS=\"(?<DNIS>[^\"]+)\"" | rex field=_raw "ANI=\"(?<ANI>[^\"]+)\"" | rex field=_raw "ApiLogs=\"(?<ApiLogs>\[.*?\])\"" | eval ApiLogs=replace(ApiLogs, "\\\"", "\"") | spath input=ApiLogs path={} output=api_array | mvexpand api_array | spath input=api_array path=request output=request | spath input=api_array path=statusCode output=statusCode | streamstats count AS api_index BY ContactId | eval request_1=if(api_index==1, request, null()) | eval statusCode_1=if(api_index==1, statusCode, null()) | eval request_2=if(api_index==2, request, null()) | eval statusCode_2=if(api_index==2, statusCode, null()) | eval request_3=if(api_index==3, request, null()) | eval statusCode_3=if(api_index==3, statusCode, null()) | stats first(request_1) as request_1 first(statusCode_1) as statusCode_1 first(request_2) as request_2 first(statusCode_2) as statusCode_2 first(request_3) as request_3 first(statusCode_3) as statusCode_3 first(DNIS) as DNIS first(ANI) as ANI by ContactId | table ContactId, ApiLogs, request_1, statusCode_1, request_2 ,statusCode_2, request_3, statusCode_3 Want to make query dynamic so that it can fetch for each contactID every pair of request and response as separate field from the APIlogs field
... View more