Skip to main content

Hello!

I am trying to understand the statedump of a for loop.

Raw log in JSON:

 

 

 

 

{
"data":{
"businessPhones":[
"(123) 234-2320",
"(123) 234-2321"
]
}
}

 

 

 

 

 

 

Parser:

 

 

 

 

filter {
json {
source => "message"
array_function => "split_columns"
}
for phoneNumber in businessPhones {
mutate {
merge => {
"user.phone_numbers" => "phoneNumber"
}
}
}
statedump {}
}

 

 

 

 

 

 

 

Statedump:

 

 

 

 

Internal State (label=):

{
"@createTimestamp": {
"nanos": 0,
"seconds": 1708923328
},
"@enableCbnForLoop": true,
"@onErrorCount": 0,
"@output": [],
"@timezone": "",
"data": {
"businessPhones": {
"0": "(123) 234-2320",
"1": "(123) 234-2321"
}
},
"message": "{\\n \\"data\\":{\\n \\"businessPhones\\":[\\n \\"(123) 234-2320\\",\\n \\"(123) 234-2321\\"\\n ]\\n }\\n}\\n"
}

 

 

 

 

Now I expected my output to be either one of the following:

Option 1:

 

 

 

 

user: {
phone_numbers: "(123) 234-2320"
phone_numbers: "(123) 234-2321"
}

 

 

 

 

Option 2:

 

 

 

 

"user": {
"phone_numbers": [
"(123) 234-2320",
"(123) 234-2321"
]
}

 

 

 

 

Where am i going wrong here please?

@Dimarskyi was wondering if i could seek your guidance please.

Thank you.

Would it be, for phoneNumber in data.businessPhones, instead of just businessPhones? It looks like it's not locating businessPhones to remap.


Reply