使用logstash输出到elasticsearch中文乱码的解决方案
来源:互联网 发布:保湿水推荐 知乎 编辑:程序博客网 时间:2024/06/08 05:11
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上的情况。
- 使用logstash输出到elasticsearch中文乱码的解决方案
- logstash输出到elasticsearch多索引
- python 输出中文乱码的解决方案
- Elasticsearch、Logstash、Kibana、Filebeat的使用总结
- elasticsearch-logstash-kibana中文文档
- Elasticsearch 入门:logstash 5.0.0 安装及输出数据到 elasticsearch
- 使用logstash将kafka数据入到elasticsearch
- jDom 和dom4j 输出的中文乱码的解决方案
- jDom 和dom4j 输出的中文乱码的解决方案
- 导入Logstash日志到Elasticsearch
- Logstash 导入数据到Elasticsearch
- 使用servlet编程,解决输出到页面的中文显示乱码问题。
- logstash-out-mongodb实现elasticsearch到Mongodb的数据同步
- logstash将采取kafka的数据到elasticSearch配置
- 中文乱码的解决方案:
- 【Intellji 14.1.4下 中文注释乱码 & 控制台输出中文乱码 问题的解决方案
- 使用myeclipse插入数据到mysql 出现中文乱码|utf8乱码解决方案[适合tomcat部署的jsp应用]
- scrapy抓取中文输出乱码解决方案
- 读《批判性思维》续
- leetcode 406. Queue Reconstruction by Height 人群高度排序
- C++命名空间 namespace的作用和使用解析
- 一个32岁入门的70后程序员给我的启示
- 表达式转换(25 分)(栈的应用)
- 使用logstash输出到elasticsearch中文乱码的解决方案
- 十个Chatbot框架介绍
- 课程小结——SURF特征提取
- 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值)
- 《算法笔记》C++ 进制转换
- java学习 java -- 代码块 继承
- 剑指offer — 二叉树与双向链表
- 实验一
- 深度学习总结(十一)——early stopping