logstash将json输入的顺序更改为弹性搜索

时间:2017-05-09 13:57:15

标签: elasticsearch apache-kafka logstash

我正在运行一个使用kafka主题的数据的logstash进程。 kafka主题中的消息已经是json格式。 logstash只是在弹性搜索中推动它们。但是这样做时,logstash会改变字段的排序。有一个团队正在消耗数据的csv格式,因此更改的顺序给他们带来了麻烦。可能是什么原因?

例如输入json {" foo1":" bar1"," foo2":" bar2"}。 logstash将其推入弹性,然后弹性,它看起来像{" foo2":" bar2"," foo1":" bar1"}

logstash config

input{
    kafka{
        codec=>'json' bootstrap_servers => [localhost:9092] topics =>  'sample-logs' auto_offset_reset => 'earliest' => group_id => 'logstash-consumer'
    }
}
output {
     elasticsearch { 
         hosts => "localhost:9200", codec => json index=> "sample-logs-es" } 
stdout { 
    codec => rubydebug 
}

2 个答案:

答案 0 :(得分:0)

set the pipeline.worker to 1, or multiple worker will do filter + output parallel

答案 1 :(得分:0)

以相同的顺序或排序的两个很好的理由:

  1. 如果您有很多相似的数据,则_source字段会更好地压缩
  2. 让人们更轻松地查看Kibana中的数据

我有一个logstash Ruby脚本,可以纠正代码处理中的版本更新和一些过去的错误。可悲的是,我还从中得到了随机顺序的JSON。而且还不知道如何重新分类以吸收到Elastic中。粗暴的做法是将所有内容都转储到文件中,使用JQ,然后直接提取。