2017-02-15 5 views
0

Мои данные глубоко вложены JSON, и мне нужно индексировать сумму определенных полей. Как новичок в Ruby, я попытался следующие (с некоторыми вариациями #i), но он бросает только _rubyexception:Цикл через вложенный json в logstash с ruby ​​

ruby { code => ' 
i = 0 
sum = 0 
while i < event.get("[foo][bar][faz]").length do 
    sum += event.get("[foo][bar][faz][#i][[baz]]") 
    i += 1 
end 
event.set("sum", sum) 
' 
} 

Как я должен правильно перебрать вложенных полей, чтобы получить сумму?

например. Это работает:

ruby { code => ' 
    event.set("sum", event.get("[foo][bar][faz][0][[baz]]") + event.get("[foo][bar][faz][1][[baz]]")) 
' 
} 

но реальное количество событий различается.

ответ

0

Я нашел решение на мой вопрос:

ruby { code => ' 
    i = 0 
    sum = 0 
    while i < event.get("[foo][bar][faz]").length do 
    sum += event.get("[foo][bar][faz][" + i.to_s + "][[baz]]") 
    i += 1 
    end 
    event.set("sum", sum) 
' 
}