无法访问 Logstash 过滤器中的 Elasticsearch 索引名称元数据



我想在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。

您快到了,您只是缺少docinfo设置,默认情况下是错误的:

input {
    elasticsearch {
        hosts => "elasticsearch.example.com"
        index => "*-logs"
        docinfo => true
    }
}

最新更新