有人能告诉我你用这两种方式使用我的字段有什么区别吗?是否修改数据类型?
在某些地方,%{[field]}可以用来引用字段的内容。例如
input { generator { count => 1 lines => [ '' ] } }
filter {
mutate { add_field => { "[Field1]" => "1" } }
mutate { rename => { "[Field1]" => "[Field2]" } }
mutate { add_field => { "[Field3]" => "3" } }
mutate { add_field => { "[Field4]" => "4" } }
mutate { rename => { "[Field3]" => "%{[Field4]}" } }
}
output { stdout { codec => rubydebug { metadata => false } } }
将产生
"4" => "3",
"Field2" => "1",
第一对突变添加了一个名为[Field1]的字段,然后将其重命名为[Field2]。第二组突变根据[Field4]的内容重命名[Field3]。
这被称为sprintf引用。它并不是在任何地方都有效。它需要插件对引用进行sprintf,而代码并不总是在您期望的地方这样做。