logstash add_field 没有填充值,而是索引中的硬编码语法
logstash add_field is not populating value instead it is hardcoding syntax in index
我正在尝试使用 3 个输入索引创建新的输出索引。在新的输出索引中,我需要从输入索引中填充几个特定字段。我正在尝试使用 add_field.it 创建新字段是像 '%{[index1name][field1inIndex1]}' 这样的硬编码,而不是从索引中填充值。我试过下面的代码:
input
{
elasticsearch{
hosts => ["hostname"]
index => "index1"
query => '{"query":{"match_all":{}}}'
docinfo => "true"
user => "uname"
password =>"pwd"
ssl=>"true"
}
elasticsearch {
#same like above for index2
}
elasticsearch {
#same like above for index3
}
}
filter
{
mutate
{
add_field =>["newfieldname","%{[index1][fieldinindex1]}"]
}
}
output
{
elasticsearch {
#creating new index here
}
}
如果 sprintf 引用未被替换,则表示事件中不存在该字段。
elasticsearch输入的字段名没有加索引名。 (如果启用 docinfo 选项,它可能会作为 [@metadata] 的一部分添加。)因此,除非您正在读取的索引中的文档字段名称包含您需要的索引名称
mutate { add_field => { "newfieldname" => "%{[fieldinindex1]}" } }
如果您确实想要 [newfieldname] 中的索引名称,那么您必须使用对它的引用,例如
mutate { add_field => { "newfieldname" => "%{[@metadata][_index]}_%{[fieldinindex1]}" } }
我正在尝试使用 3 个输入索引创建新的输出索引。在新的输出索引中,我需要从输入索引中填充几个特定字段。我正在尝试使用 add_field.it 创建新字段是像 '%{[index1name][field1inIndex1]}' 这样的硬编码,而不是从索引中填充值。我试过下面的代码:
input
{
elasticsearch{
hosts => ["hostname"]
index => "index1"
query => '{"query":{"match_all":{}}}'
docinfo => "true"
user => "uname"
password =>"pwd"
ssl=>"true"
}
elasticsearch {
#same like above for index2
}
elasticsearch {
#same like above for index3
}
}
filter
{
mutate
{
add_field =>["newfieldname","%{[index1][fieldinindex1]}"]
}
}
output
{
elasticsearch {
#creating new index here
}
}
如果 sprintf 引用未被替换,则表示事件中不存在该字段。
elasticsearch输入的字段名没有加索引名。 (如果启用 docinfo 选项,它可能会作为 [@metadata] 的一部分添加。)因此,除非您正在读取的索引中的文档字段名称包含您需要的索引名称
mutate { add_field => { "newfieldname" => "%{[fieldinindex1]}" } }
如果您确实想要 [newfieldname] 中的索引名称,那么您必须使用对它的引用,例如
mutate { add_field => { "newfieldname" => "%{[@metadata][_index]}_%{[fieldinindex1]}" } }