Logstash导入CSV至Elasticsearch失败:卡顿且数据异常
问题排查与解决步骤
1. 修正Logstash配置中的关键错误
- 移除废弃配置:
document_type => "ww2_weapon"在Elasticsearch 7.0及以上版本已被废弃,会引发兼容性异常,直接删除该配置项。 - 跳过CSV表头:你的CSV文件包含表头行,但当前配置未跳过,会导致表头被当作数据导入引发混乱。在csv过滤器中添加
skip_header => true。
修改后的完整配置:
file { path => "C:/Users/aron/Desktop/es/archive/weapons.csv" start_position => "beginning" sincedb_path => "NUL" } } filter { csv { separator => "," columns => ["name", "type", "country"] skip_header => true } } output { elasticsearch { hosts => ["http://localhost:9200/"] index => "weapons" } stdout { codec => rubydebug } # 便于直观查看解析后的数据格式 }
2. 检查CSV文件格式规范
- 字段特殊字符处理:如果CSV中存在包含逗号、换行符的字段(如带逗号的武器名称),必须用双引号包裹整个字段,否则csv过滤器会错误拆分字段,导致数据错位。例如:
"10.5 cm Kanone 17, Modified",Field Gun,Germany - 编码与换行符:确保CSV文件编码为UTF-8无BOM(Windows下用记事本另存为选择「UTF-8」而非「UTF-8 BOM」),换行符使用Windows标准CRLF格式,避免Logstash读取时出现解析异常。
3. 优化Logstash运行性能
Windows环境下Logstash默认JVM内存可能不足,导致卡顿无响应:
- 打开Logstash安装目录下的
config/jvm.options文件 - 修改内存配置,例如将:
调整为:-Xms1g -Xmx1g-Xms2g -Xmx2g - 重启Logstash使配置生效
4. 分步测试验证
先将CSV文件精简为3-5行测试数据(包含表头),用修改后的配置启动Logstash,观察stdout输出的rubydebug数据是否字段匹配正确,确认无误后再处理完整文件。
内容的提问来源于stack exchange,提问作者Áron Pop Adorján
相关产品推荐
相关产品推荐

