Logastash CSV过滤器|转换
从csv转换某些值时遇到问题。 如果我只声明一个,例如'id'=>'integer',它可以正常工作。 如果我在下面的配置中添加另一个类似的转换,它将崩溃Logastash CSV过滤器|转换,csv,logstash,elastic-stack,Csv,Logstash,Elastic Stack,从csv转换某些值时遇到问题。 如果我只声明一个,例如'id'=>'integer',它可以正常工作。 如果我在下面的配置中添加另一个类似的转换,它将崩溃 input { tcp { port => 5000 } file { path => '/tmp/logstash/databases/1.csv' type => 'test'
input {
tcp {
port => 5000
}
file {
path => '/tmp/logstash/databases/1.csv'
type => 'test'
start_position => 'beginning'
}
}
filter {
csv {
columns => ['Id','ElapsedRealTimeNanos','Accuracy','Altitude','Bearing','CreatedOn','Latitude','Longitude','Provider','Speed','Time']
separator => ','
convert => {'Accuracy' => 'float','id'=>'integer'}
}
}
output {
elasticsearch {
hosts => 'elasticsearch:9200'
}
stdout{
}
}
错误:
{:timestamp=>"2016-04-27T18:49:51.881000+0000",
:message=>"fetched an invalid config",
:config=>"input {\n\ttcp {\n\t\tport => 5000\n\t}\n\tfile {\n
path => '/tmp/logstash/databases/1.csv'\n
type => 'test'\n start_position => 'beginning'\n
}\n}\n\nfilter {\n csv {\n
columns => ['Id','ElapsedRealTimeNanos','Accuracy','Altitude','Bearing','CreatedOn','Latitude','Longitude','Provider','Speed','Time']\n
separator => ','\n\t\t\t\tconvert => {'Accuracy' => 'float','id'=>'integer'}\n }\n}\n\noutput {\n\telasticsearch {\n\t\t\thosts => 'elasticsearch:9200'\n\t}\n\tstdout{\n\n\t}\n}\n\n",
:reason=>"Expected one of #, {, } at line 16, column 38 (byte 391) after filter {\n csv {\n
columns => ['Id','ElapsedRealTimeNanos','Accuracy','Altitude','Bearing','CreatedOn','Latitude','Longitude','Provider','Speed','Time']\n
separator => ','\n\t\t\t\tconvert => {'Accuracy' => 'float'", :level=>:error}
您可以将其用作:
...
convert => {
'Accuracy' => 'float'
'Id' => 'integer'
}
...
转换之间没有逗号
您还可以使用--configtest选项检查配置文件是否存在错误:
λ bin/logstash -f example.conf --configtest
谢谢阿尔伯特-不再是错误了。但不幸的是,字符串未被转换:/精度保存为30.0以便更清楚:在kibana中,它将“字符串”显示为accuracyDelete索引和logstash创建的索引模板的类型。从csv中删除标题。它会创建数字格式异常。重新编制数据索引。这对我很管用。另外,
id
必须是id
。更新:使用mutate转换它有效!