[英]using logstash to parse csv file
我有一個用來搜索一組文檔的elasticsearch索引。
這些文檔最初是csv格式的,我希望使用logstash解析這些文檔,因為它具有強大的正則表達式工具,例如grok。
我的問題是我有以下幾方面的東西
field1,field2,field3,number@number#number@number#number@number
在最后一列中,我使用#分隔鍵值對key @ value,並且可以有任意數量的鍵值對
有沒有辦法讓我使用logstash對此進行解析,並使其以elasticsearch(或其他可搜索格式)將最后一列存儲為以下json,因此我可以對其進行搜索
[
{"key" : number, "value" : number},
{"key" : number, "value" : number},
...
]
首先,您可以使用CSV過濾器解析出最后一列。 然后,您可以使用Ruby過濾器編寫自己的代碼來完成所需的工作。
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}
}
有了這個過濾器,當我輸入
1 @ 10#2 @ 20
輸出是
"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}"
]
僅供參考。 希望這可以幫到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.