1
私はlogstashを初めて使用しています。私は次のログ形式を持っています。Logstash内部オブジェクトの反復処理とデータベースへの挿入
{"library":"xyz","locations":["location1":"abc","location2":"mno"]}
次に、これらのデータを次の形式でデータベースに追加する必要があります。
- "場所": "ライブラリ"(データベースフィールド)
- "ABC": "XYZ"
- "MNO": "XYZ"
は、これまでのところ私は、抽出行っていますjsonとレコードをデータベースに保存します。しかし、上記のシナリオでは、データベースに2つのエントリを追加する必要があります。私は場所を繰り返す方法を知る必要があり、それぞれの場所はデータベースの.documentationリンクまたは簡単な例で十分であるレコードにレコードを追加する必要があります。
これは、あなたがフィールドの各分割のための個別のイベントを作成しsplit
filter、と望むものを達成することができるかもしれ
input {
file {
path=> "filePath"
start_position => beginning
sincedb_path => "/dev/null"
}
}
filter {
grok{
match => { "message" => "%{GREEDYDATA:request}"}
}
json{
source => "request"
target => "parsedJson"
}
mutate {
add_field =>
"locations" => "%{[parsedJson][locations]}"
"library" => "%{[parsedJson][library]}"
}
remove_field => ["request", "message", "@version", "host", "parsedJson"]
}
}
output {
stdout {
codec => rubydebug
}
mongodb{
collection => "library"
database => "db"
uri => "mongodb://127.0.0.1:27017"
}
}
データベースと言うと、elasticsearchの観点からの出力を意味しますか?質問を編集して出力設定を追加できますか? – pandaadb
こんにちは@pandaadb私は設定ファイルを更新しました。あなたのコメントをありがとうございます。 – Sajithv
大丈夫です - あなたの望むようにこれが可能でないかもしれないと思います。出力は1イベントのみを取得し、そのイベントを送信します。それらを別々にするには、(a)フィールドを分離して新しいイベントを生成するフィルタを作成するか(現在はカスタムフィルタでのみ可能です)、(b)mongodbに基づいて独自の出力プラグインを作成するかそこに正しいこと。 – pandaadb