【问题标题】:Can't access Elasticsearch index name metadata in Logstash filter无法在 Logstash 过滤器中访问 Elasticsearch 索引名称元数据
【发布时间】:2016-11-26 18:10:22
【问题描述】:

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

【问题讨论】:

    标签: elasticsearch logstash logstash-configuration


    【解决方案1】:

    你快到了,你只是错过了docinfo setting,默认情况下是假的:

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

    【讨论】:

    • 谢谢。我一直在查看 docinfo_fields 和 docinfo_target。
    猜你喜欢
    • 2016-06-28
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多