테스트1
JSON depth가 3 이상인 데이터 필드별로 조회하기
| makeresults
| eval _raw="{ \"Key1\": \"Value1\", \"Key2\": { \"subKey2_1\": \"sub value1 for key2\", \"Manifest\": [{ \"flight\": \"start\", \"City\": \"Los Angeles\", \"code\": 7870, \"Inventory\": { \"snacks\": 300, \"status\": \"full\" } }, { \"flight\": \"end\", \"City\": \"Las Vegas\", \"code\": 7470, \"Inventory\": { \"snacks\": 56, \"status\": \"near empty\" } } ], \"subKey2_3\": \"sub value3 for key2\" }, \"Key3\": \"Value3\", \"Key4\": \"Value4\"}"
| fromjson _raw
| fromjson Key2
| eval Origin = mvindex(Manifest,0)
| eval Destination = mvindex(Manifest,1)
fromjson
: JSON 형태 객체를 다중값 가진 필드들로 전환하는 명령어
mvindex(m,start,end)
: m 필드의 start번째행 반환하는 함수
| rex mode=sed field=Origin "s/\"([^\"]+)\":/\"\\1_Origin\":/g"
| rex mode=sed field=Destination "s/\"([^\"]+)\":/\"\\1_Destination\":/g"
rex
: mode=sed 속성 통해 정규식에 해당하는 필드의 텍스트 변경 가능
참고 사이트 : https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647527