Logstash 解剖过滤器映射到未定义的类型

Logstash dissect filter is mapping to undefined type

我正在使用 Filebeat 将日志发送到 Logstash,然后发送到 Elasticsearch 和 Kibana。 因为日志的每一行都包含由“###”分隔的值,所以我使用 'dissect' 过滤器将单个消息块拆分为不同的字段。我的过滤器配置:

dissect {
  mapping => {
    "message" => "%{date} %{time}###%{mode}###%{spec}###%{userid}### ..."
  }
  remove_field => [ "message" ]
}

所以我剖析并删除了原始消息对象。它有效,但它将它映射到 'undefined' 类型的关键字 如下面的屏幕截图所示,它放置了一个“?”在 Kibana 的字段旁边。

Kibana screenshot

我如何确保它解析为 'string' 或 'text'?现在无法可视化此数据,因为它不适用于 'undefined' 类型。

通过使用 tcp 连接作为日志馈送器将 Filebeat 替换为日志馈送器解决了我自己的问题。