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