簡體   English   中英

如何在Logstash中輸入一個JSON的文件(數組形式)?

[英]How to input a JSON file (array form) in Logstash?

我嘗試了很多東西來輸入我的 JSON 文件(數組形式),到目前為止我沒有任何結果

input{
    file{
        path=> "/usr/share/logs/Docs.json"


        #codec=> "json" tried
        #codec=> json {charset => "ISO-8859-1"} tried
        #codec => json{ } tried


        start_position=> "beginning"
        sincedb_path=> "/dev/null"
    }
}
filter{
    json{
        source=> "message"
    }
 }
output{
    stdout{
        codec=> "json"
    }
    
    elasticsearch{
        hosts=> ["http://es1:9200"]
        index=> "index_abc"
    }
}

JSON 文件格式(都在同一行):

[{"id":1,"something":"text1"},{"id":2,"something":"text2"},{"id":3,"something":"text3"}]

如果可以的話,我將不勝感激。

問題解決了,這是因為編碼,我使用jq實用程序將我的 JSON 文件轉換為正確的格式(對於 Logstash),即:

{"id":1,"something":"text1"}
{"id":2,"something":"text2"}
{"id":3,"something":"text3"}

起初我沒有注意到,但是 jq 在轉換過程中更改了我的文件的編碼,它最終以 UTF-16 LE 結束。 因此,我使用 VS Code 將編碼更改(並保存)為 UTF-8,之后它運行良好。

我現在可以使用的更新代碼:

input{
    file{
        path=> "/usr/share/logs/Docs_formatted.json"
        codec=> "json"
        start_position=> "beginning"
        sincedb_path=> "/dev/null"
    }
}
filter{}
output{
    stdout{}
    
    elasticsearch{
        hosts=> ["http://es1:9200"]
        index=> "index_abc"
    }
}

對於那些感興趣的人,我使用此命令行將我的 JSON 文件轉換為正確的格式(Windows 命令行):

type Docs.json | jq -c '.[]' > Docs_formatted.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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