Splunk Search

How to create the proper search to extract all of the fields and their respective field_values from the sample data?

Strangertinz
Path Finder

Hi Splunkers!


Any one able to assist me with a search that I am trying to create below. 

I want to extract some data from multiple json data value fields. I am able to ingest the json data and extract the fields and values correctly.  Sample data below 


{

"key1": "value1",

"key2": "[field1 = field_value1] [field2 = field_value2] [field3 = field_value3] [field4 = field_value4]",

"key3": "value3",

"key4": "[field5 = field_value5] [field6 = field_value6] "
}


I am trying to create the proper search to extract all of the fields and their respective field_values from the sample data above.


Thanks in advance! 

0 Karma
1 Solution

ITWhisperer
SplunkTrust
SplunkTrust

Assuming this is an accurate representation of your events, try something like this

| rex max_match=0 field=key2 "\[(?<kvpair2>\S+\s=\s[^\]]+)\]"
| rex max_match=0 field=key4 "\[(?<kvpair4>\S+\s=\s[^\]]+)\]"
| eval kvpairs=mvappend(kvpair2, kvpair4)
| mvexpand kvpairs
| rex field=kvpairs "(?<key>\S+)\s=\s(?<value>.+)
| eval {key}=value

View solution in original post

0 Karma

Strangertinz
Path Finder

Awesome! Thanks for assisting with the search! ITWhisperer for president! 

0 Karma

Strangertinz
Path Finder

Thanks for the prompt and excellent response! 

my apologies for not including this earlier... but what if the json data is nested like the example below?

I would still like to extract field and field values 

{

"key1": "value1",

"key2":  { "key2_key1": "key2_key1_value1",
                   "key2_key2": "key2_key2_value2",
                    "key2_key3" : "[field1 = field_value1] [field2 = field_value2] [field3 = field_value3] [field4 = field_value4]" }

}

0 Karma

ITWhisperer
SplunkTrust
SplunkTrust
| spath
| rex max_match=0 field=key2.key2_key3 "\[(?<kvpairs>\S+\s=\s[^\]]+)\]"
| mvexpand kvpairs
| rex field=kvpairs "(?<key>\S+)\s=\s(?<value>.+)
| eval {key}=value
0 Karma

ITWhisperer
SplunkTrust
SplunkTrust

Assuming this is an accurate representation of your events, try something like this

| rex max_match=0 field=key2 "\[(?<kvpair2>\S+\s=\s[^\]]+)\]"
| rex max_match=0 field=key4 "\[(?<kvpair4>\S+\s=\s[^\]]+)\]"
| eval kvpairs=mvappend(kvpair2, kvpair4)
| mvexpand kvpairs
| rex field=kvpairs "(?<key>\S+)\s=\s(?<value>.+)
| eval {key}=value
0 Karma
Get Updates on the Splunk Community!

Community Content Calendar, November Edition

Welcome to the November edition of our Community Spotlight! Each month, we dive into the Splunk Community to ...

October Community Champions: A Shoutout to Our Contributors!

As October comes to a close, we want to take a moment to celebrate the people who make the Splunk Community ...

Stay Connected: Your Guide to November Tech Talks, Office Hours, and Webinars!

What are Community Office Hours? Community Office Hours is an interactive 60-minute Zoom series where ...