elasticsearch - 使用 quarkuslogging-gelf 扩展和 ELK 堆栈时出现索引错误

标签 elasticsearch logstash kibana quarkus elk

我已经设置了日志记录,如 https://quarkus.io/guides/centralized-log-management 中所述。使用 7.7 版本的 ELK Stack。

我的logstash管道看起来像建议的示例:

input {
    gelf {
        port => 12201
    }
}
output {
    stdout {}
    elasticsearch {
        hosts => ["http://elasticsearch:9200"]
    }
}

大多数消息都使用logstash.* 作为索引模式显示在我的Kibana 中。但有些消息被丢弃。

2020-05-28 15:30:36,565 INFO [io.quarkus](Quarkus 主线程)Quarkus 1.4.2.Final 在 38.335 秒内开始。收听:http://0.0.0.0:8085 问题似乎是,字段 MessageParam0、MessageParam1、MessageParam2 等映射到首先出现在日志中的类型,但实际上包含多个数据类型。 Elasticsearch 日志显示错误,例如 ["org.elasticsearch.index.mapper.MapperParsingException: 无法解析字段 [MessageParam1]。

Quarkuslogging-gelf 扩展中有什么方法可以正确映射值吗?

最佳答案

ELK 可以通过查看第一个索引文档来自动创建 Elasticsearch 索引映射。这是一个非常方便的功能,但它有一些缺点。

例如,如果您有一个可以包含数字或字符串的字段,如果第一个文档包含该字段的数字,则映射将使用数字字段创建,因此您将无法索引包含该字段内的字符串...

唯一的解决方法是预先创建映射(您只能定义导致问题的字段,其他字段将自动创建)。

这是一个 ELK 问题,Quarkus 方面我们无能为力。

关于elasticsearch - 使用 quarkuslogging-gelf 扩展和 ELK 堆栈时出现索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62066353/

相关文章:

elasticsearch - 我应该使用ElasticSearch _type作为路由吗

elasticsearch - Kibana 连接两个独立的事件

elasticsearch - logstash:从结果中排除机器人

ruby - 使用Logstash和Ruby提取嵌套对象

java - 在Java中为Logstash/Kibana的代码中设置索引

hadoop - Ambari Hadoop/Spark 和 Elasticsearch SSL 集成

ruby-on-rails - ELK stack + Filebeat 收集Rails日志

mysql - 意外错误 error_class=Errno::EADDRINUSE 错误 ="Address already in use - bind(2) for\"0.0.0.0\"port 24233"

elasticsearch - 将 kibana 与 elasticsearch 连接起来

PHP ElasticSearch如何在索引记录之前设置映射?