elasticsearch Logstash和ElasticSearch中的映射器解析异常,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch Logstash和ElasticSearch中的映射器解析异常,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch Logstash和ElasticSearch中的映射器解析异常

elasticsearch Logstash和ElasticSearch中的映射器解析异常,elasticsearch,logstash,elasticsearch,Logstash,我在尝试使用Logstash解析日志并输出到ElasticSearch时遇到Mapper解析异常,错误消息为:“字段名不能包含点(.)” 这在旧的Logstash版本中运行良好,我最近升级到了Logstash 2.0: 我的日志存储配置文件如下所示: input { kafka { topic_id => "topic1" zk_connect => "111.222.333.444:2181" type => "log_type" re

我在尝试使用Logstash解析日志并输出到ElasticSearch时遇到Mapper解析异常,错误消息为:“字段名不能包含点(.)”
这在旧的Logstash版本中运行良好,我最近升级到了Logstash 2.0:
我的日志存储配置文件如下所示:

input {
  kafka {
    topic_id => "topic1"
    zk_connect => "111.222.333.444:2181"
    type => "log_type"
    reset_beginning => true
  }
}

output {
#  stdout { codec => rubydebug }

  elasticsearch {
    hosts => "127.0.0.1:9200"
    flush_size => 200
    idle_flush_time => 1
    index => "index-name-%{+YYYY.MM.dd}"
   }
}
如上所述,字段名不能支持其名称中的点。
如页面所述,一个简单的解决方法是使用以下过滤器将所有点替换为下划线:

filter {
  ruby {
        code => "
          event.to_hash.keys.each { |k| event[ k.sub('.','_') ] = event.remove(k) if k.include?'.' }
        "
    }
}

遗憾的是,他们没有清理自己的代码,而是引入了一个deu dot过滤器来实现这一点。