我希望在Logstash中处理时将elasticsearch索引名称添加为事件中的字段。这被认为是非常简单的,但索引名称不会被打印出来。这是完整的Logstash配置。
input {
elasticsearch {
hosts => "elasticsearch.example.com"
index => "*-logs"
}
}
filter {
mutate {
add_field => {
"log_source" => "%{[@metadata][_index]}"
}
}
}
output {
elasticsearch {
index => "logstash-%{+YYYY.MM}"
}
}
这将导致log_source
设置为%{[@metadata][_index]}
而不是索引的实际名称。我用_id尝试了这个并且没有下划线但是它总是只输出引用而不是值。
仅执行%{[@metadata]}
崩溃Logstash时出现错误,因为它正在尝试错误地访问列表,因此正在设置[@metadata]
,但似乎索引或任何值都缺失。
有没有人有另一种方法为事件分配索引名称?
我正在使用Logstash和Elasticsearch的5.0.1。
答案 0 :(得分:1)
你几乎就在那里,你只是错过了docinfo
setting,默认是假的:
input {
elasticsearch {
hosts => "elasticsearch.example.com"
index => "*-logs"
docinfo => true
}
}