使用logstash输出到elasticsearch中文乱码的解决方案

         logstash版本为5.5.3,elasticsearch版本有两个,分别为2.3.0和5.5.3;其中elasticsearch-2.3.0运行在windows机器上,elasticsearch-5.5.3运行在linux机器上。logstash运行在windows机器上。本文所探讨的由logstash输出到elasticsearch所导致的中文乱码问题,其根本原因是操作系统编码不一样的问题。而出现乱码时,logstash运行在windows环境中;不管elasticsearch运行在windows还是linux中,只要logstash运行在windows中并且你没有在conf启动文件的input模块设置正确的编码的话,就会乱码。

       我的logstash的启动文件是这样配置的:

input {
      kafka {
        bootstrap_servers => ["192.168.110.31:9092,192.168.110.31:9093,192.168.110.31:9094"]
        client_id => "test"
        group_id => "test"
        auto_offset_reset => "latest"
        consumer_threads => 5
        decorate_events => true
        topics => ["test","loge"]
       
      }
 }

filter{       

  //.......

}

        
output {
     elasticsearch {
       //.......
     }
     stdout {
        codec => json_lines
     }
}

        当我刚开始发现elasticsearch里面的中文乱码时,我第一时间排查原因,首先我得弄清楚是不是kafka中数据本来就是乱码的,然后我在idea中编写了一个消费者程序将数据取出来,发现正常显示并没有乱码;紧接着测试logstash从kafka中读取出来是否乱码,我再次启动logstash,然后控制台打印的中文也正常;但去elasticsearch查询中文就乱码,我也知道是字符集问题,但是不知道在哪里设置;幸好logstash的各个模块里面有一个通用配置属性是codec,默认为plain,里面可以设置编码,刚开始我以为是在存入elasticsearch时乱码的,所以就把codec => plain{ chaset => "编码"}这句放在output里面的elasticsearch模块里,但是不管我设置成utf-8还是gbk还是iso-8859-1,最后还是乱码。所以我把问题定位在input模块,应该是要在读取kafka数据时设置正确的编码,然后按下面这么改就OK了:

input {
      kafka {
        bootstrap_servers => ["172.31.11.31:8071,172.31.11.31:8072,172.31.11.31:8073"]
        client_id => "test"
        group_id => "test"
        auto_offset_reset => "latest"
        consumer_threads => 5
        decorate_events => true
        topics => ["test","loge"]
        codec => plain{ charset => "GBK" } //关键是这一句决定存入elasticsearch中文是否乱码
      }
}

         output里面不用设置;当我这样设置以后,我再次启动logstash,发现logstash控制台中文开始乱码,我赶紧去elasticsearch里面查询,发现中文反而是正常的。所以在windows中运行logstash时,如果出现中文乱码,记得在input模块里加codec => plain{ charset => "GBK" } ,现在看来logstash控制台如果不乱码,存入elasticsearch就乱码;logstash控制台乱码,存入elasticsearch就不乱码。

     注意:如果你logstash和elasticsearch都运行在linux上就不用设置,中文不会乱码。如果你logstash运行在windows上,那么不管elasticsearch在windows还是linux上,都要设置编码。我没有测试logstash在linux上,elasticsearch在windows上的情况。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Logstash可以将处理过的数据输出Elasticsearch中,实现数据的存储和检索。具体的步骤如下: 1. 在Logstash的配置文件中,添加Elasticsearch输出插件,指定Elasticsearch的地址和索引名称等参数。 2. 启动Logstash,它会读取指定的数据源,对数据进行处理,并将处理后的数据输出Elasticsearch中。 3. 在Elasticsearch中,可以使用Kibana等工具进行数据的可视化和检索。 总的来说,LogstashElasticsearch是一对非常强大的组合,可以帮助我们快速构建数据处理和检索系统。 ### 回答2: Logstash是一个用于数据收集、处理和转换的工具,可以从不同的源获取数据并将其输出到各种目标存储。而Elasticsearch则是一个开源的分布式搜索引擎,它能够在高效、安全、可伸缩的基础上索引与搜索海量实时数据。 Logstash输出Elasticsearch,是一种常见的数据处理和存储的方案,也是Elastic Stack(ELK)的一部分。这种方案可以结合多个数据源和数据格式,并通过logstash进行数据转换和处理,最终将收集的数据存储到Elasticsearch中,同时在Kibana中进行数据展示和分析。 为了实现这种方案,需要在Logstash中配置Elasticsearch插件,通过设置输出插件的类型和参数来指定Elasticsearch作为输出目标。在数据从不同源收集后,Logstash会将其进行过滤和转换处理,然后将处理后的数据输出Elasticsearch中。 当数据存储到Elasticsearch中后,可以使用Kibana进行数据展示和分析。通过Kibana的图表和仪表盘 ,我们可以对数据进行实时监控,进行查询分析和可视化。同时,Elasticsearch还具有高效、可伸缩的实时搜索和分布式存储特性,可以支持海量数据的存储和查询。 总的来说,Logstash输出Elasticsearch是一个实现实时数据收集和分析的强大工具和技术,可以帮助我们更好的理解数据,以便做出更好的决策和优化业务。 ### 回答3: Logstash是一种开源数据收集引擎,可以将不同来源的数据进行过滤、转换和聚合,最终输出到不同目的地。其中,输出Elasticsearch是最常见的用例之一。 首先,我们需要安装和配置LogstashElasticsearchLogstash的配置文件中需要指定输出插件为Elasticsearch,并配置Elasticsearch的IP地址和端口等参数。例如: ``` output { elasticsearch { hosts => ["127.0.0.1:9200"] index => "myindex-%{+YYYY.MM.dd}" } } ``` 上面的配置表示将数据输出到本地的Elasticsearch实例,并将索引的名称设为“myindex-年月日”的格式,可以实现按天切分索引,方便后续的查询和维护。 在Logstash中,我们可以使用不同的插件对数据进行处理和转换,以满足不同的需求。比如,使用grok插件将日志中的格式化信息提取出来,使用date插件解析时间戳等等。这些插件都可以在Logstash的插件库中找到,也可以自己编写插件满足特定的需求。 在输出Elasticsearch时,Logstash会将数据转化为JSON格式,并根据指定的索引名称和类型进行索引。Elasticsearch提供了强大的搜索和聚合功能,可以对数据进行复杂的查询和分析。同时,Elasticsearch也支持分布式架构,可以横向扩展以处理海量数据和高并发量。 总之,Logstash输出Elasticsearch是一种非常方便和实用的数据处理和分析方案,实现了数据的集中化和可视化,可以帮助我们更好地理解和利用数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值