簡體   English   中英

使用logstash解析CSV文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM