一、前言
这篇主要记录在导入数据时候踩到的坑,这些坑总共花费我小一天的时间,记录一下。
二、正文
1、logstash显示在导入数据,ES也成功新建了索引,但是没数据
最开始遇到的是这个坑,logstash
的输入框就僵住了,博主以为在导入数据呢,等了半天,ES竟然什么数据都没,气够呛。改动配置什么的依然无效,最后还是看日志吧。
(1) 查看logstash
的导入进度,发现每次都是导入一条就没了。
默认位置:logstash-6.2.4\data\plugins\inputs\file
(2) 查看ES的日志:/logs/elasticsearch.log
1)错误1:
Field [_type] is a metadata field and cannot be added inside a document. Use the index API request parameters.
是_type字段的问题,更改_type为type,重新导入
2)错误2:
[2019-04-09T15:30:49,233][DEBUG][o.e.a.b.TransportShardBulkAction] [test_access][2] failed to execute bulk item (index) BulkShardRequest [[test_access][2]] containing [32] requestsorg.elasticsearch.index.mapper.MapperParsingException: Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters.
后面一句的意思是,文档中不能包含_id
字段,这个字段是ES
的元数据字段。这里我们可使用id来代替试试。就这样看着ES
的错误日志,有错就改,改着改着就能成功导入了。
2、ES中没有相关索引,导致不能导入数据的话
我自己本地设置过这个东西,所以没注意,不过如果真的碰到这种情况,按下面的代码设置即可。网上看到一段话,对于ES来说,5.0以上需要设置自动创建index
。所以设置ES:
PUT /_cluster/settings
{
"persistent" : {
"action": {
"auto_create_index": "true"
}
}
}
在kibana
的tools
里面输入这个执行就好了。
3、除了导入错误的原因,导致导入失败之外,还有个可能,就是logstash默认不处理一天前的文件。
参考:https://blog.csdn.net/zhaoyangjian724/article/details/52274656
解决方案:
(1) 配置中,在input
的file
处新增: ignore_older => 87400
(2) 修改我们要导入的数据,输入空行,或者新增一些数据,让文件的修改时间变成最新的
4、由于sincedb文件而引起的导入失败问题
有时候导入失败的可能性是这个管道已经在一个点运行,从而生成一个sincedb
文件。这将导致针对同一文件的每次后续运行得出结论已经处理了数据。
方案:
sincedb_path => "/dev/null"
OR
#for Windows
sincedb_path => "NUL"
这将禁用sincedb
机制,并应在start_position: beginning
每次运行时重新处理整个文件(因为您已添加)。这部分是看需求的,如果需要查看自己定义的sincedb_path
文件来知道导入进度,那么最好还是不要禁用这个设置
================= Logstash 7.0 ==================================
1、logstash就停留在:
Successfully started Logstash API endpoint {:port=>9600}
首先按照之前的方案解决,发现没有作用,可能是logstash7.0
的和之前的不一样吧。
(1) 如果你也出现相同的情况,那么请注意了,命令行显示success
,代表stdin{}
正在工作,那么此时,你要保证,你的配置文件的路径:
path => "E:\files\xx\xx.json" ,
把反斜杠全部改成正斜杠, path => "E:/files/xx/xx.json"
然后删除sincedb
文件,重新导入。你会发现,导入成功了,日
这个时候,我们打开elasticsearch-head
,就会发现该索引下已经成功导入了数据,我的天。
(2) 需要注意,导入的文件也要有访问权限,如果文件无权限访问,那么自然logstash
也无法读取导入
参考:https://discuss.elastic.co/t/stuck-at-successfully-started-logstash-api-endpoint-port-9600/155023
关于logstash的坑,我会持续补充在这篇博客。不说了,都是泪。
end