elasticstarchの特定のフィールドをlogstashで更新しようとしています。 logstashによって一連のフィールドのみを更新することは可能ですか?Logstash elasticsearchで文書を更新する
我々はNULL値フィールドは削除の代わりにNULL値の更新をスキップ取得され、これを使用するときに私たちは、上記の構成を使用している
input {
file {
path => "/**/**/logstash/bin/*.log"
start_position => "beginning"
sincedb_path => "/dev/null"
type => "multi"
}
}
filter {
csv {
separator => "|"
columns => ["GEOREFID","COUNTRYNAME", "G_COUNTRY", "G_UPDATE", "G_DELETE", "D_COUNTRY", "D_UPDATE", "D_DELETE"]
}
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-data-monitor"
query => "GEOREFID:%{GEOREFID}"
fields => [["JSON_COUNTRY","G_COUNTRY"],
["XML_COUNTRY","D_COUNTRY"]]
}
if [G_COUNTRY] {
mutate {
update => { "D_COUNTRY" => "%{D_COUNTRY}"
}
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-data-monitor"
document_id => "%{GEOREFID}"
}
}
、以下のコードを見つけてください。
データは2つの異なるソースから来ています。 1つはXMLファイルからのもので、もう1つはJSONファイルからのものです。
XMLログ形式:GEO-1 | CD | 23 | John | 892 |カナダ| 31-01-2017 | QC | - | - | - | - | - JSONログ形式:GEO-1 | AS | 33 | - | - | - | - | - | Mike | 123 | US | 31-01-2017 | QC
1つのログを追加すると、新しい文書がインデックスに作成されます。 2番目のログファイルを読むとき、既存の文書は更新されるべきです。更新は、ログファイルがXMLの場合は最初の5つのフィールドで、ログファイルがJSONの場合は最後の5つのフィールドでのみ発生します。 logstashでこれを行う方法をお教えください。
上記のコードを試してみてください。確認してください、これを修正する方法について助けてくれる人はいますか?
誰か助けてもらえますか? – banu
フィルタ定義のみを提供しますが、update/insert/upsert操作は、elasticsearchの出力を介して行われます。あなたはそれについてここで読むことができます:https://www.elastic.co/guide/en/logstash/2.4/plugins-outputs-elasticsearch.html – pandaadb
@pandaadbが質問を編集しました。あなたは質問を見て、これについて助けてください。 – banu