使用logstash解析csv文件
我有一个elasticsearch索引,我用它来索引一组文档 这些文档最初是csv格式的,我希望使用logstash解析这些文档,因为它有强大的正则表达式工具,比如grok 我的问题是我有以下几点使用logstash解析csv文件,csv,
elasticsearch,logstash,Csv,
elasticsearch,Logstash,我有一个elasticsearch索引,我用它来索引一组文档 这些文档最初是csv格式的,我希望使用logstash解析这些文档,因为它有强大的正则表达式工具,比如grok 我的问题是我有以下几点 field1,field2,field3,number@number#number@number#number@number 在最后一列中,我有键值对key@value以#分隔,可以有任意数量的 有没有一种方法可以让我使用logstash来解析它,并让它以elasticsearch(或其他可搜索的格
field1,field2,field3,number@number#number@number#number@number
在最后一列中,我有键值对key@value以#分隔,可以有任意数量的
有没有一种方法可以让我使用logstash来解析它,并让它以elasticsearch(或其他可搜索的格式)将最后一列存储为以下json,这样我就可以搜索它了
[
{"key" : number, "value" : number},
{"key" : number, "value" : number},
...
]
首先,可以使用filter解析最后一列。
然后,您可以使用过滤器编写自己的代码来完成所需的工作
input {
stdin {
}
}
filter {
ruby {
code => '
b = event["message"].split("#");
ary = Array.new;
for c in b;
keyvar = c.split("@")[0];
valuevar = c.split("@")[1];
d = "{key : " << keyvar << ", value : " << valuevar << "}";
ary.push(d);
end;
event["lastColum"] = ary;
'
}
}
output {
stdout {debug => true}
}
仅供参考。希望这能对您有所帮助。谢谢,我不知道ruby过滤器的存在,我正准备用ruby编写自己的过滤器并使用它,但这应该可以很好地完成这项工作。
"message" => "1@10#2@20",
"@version" => "1",
"@timestamp" => "2014-03-25T01:53:56.338Z",
"lastColum" => [
[0] "{key : 1, value : 10}",
[1] "{key : 2, value : 20}"
]