2017-10-13 13 views
0

私はLogstashで練習しており、このエラーの原因を理解できません。 フィールドを削除して名前を変更してインデックスを修正したいとします。 私はこれは私のエントリの例であるLogstash 5.6.2にlogstashでインデックスを更新できない可能性がありますか?

だ:

{ 
    "_index": "test-shakespeare-italian", 
    "_type": "logs", 
    "_id": "AV8QsD5pzoUbREG_8icr", 
    "_score": 1, 
    "_source": { 
     "nome_opera": "Henry IV", 
     "battuta_numero": "3.2.9", 
     "battuta": "Make me believe that thou art only markd", 
     "@timestamp": "2017-10-12T13:05:06.519Z", 
     "id_battuta": 1841, 
     "dialogo_numero": 1, 
     "@version": "1", 
     "interlocutore": "KING HENRY IV" 
    } 
    } 

は、これは私のパイプラインである:

# this pipeline updates an existing index by 
# changing name of field "nome_opera" in "opera" 
# dropping field "dialogo numero" 
input { 
    elasticsearch { 
    hosts => "localhost" 
    index => "test-shakespeare-italian" 
    query => '{"query": {"match_all": {}}}' 
    } 
} 
filter { 
    mutate { 
    rename => { "nome_opera" => "opera"} 
    remove_field => "dialogo_numero" 
    } 
} 
output { 
    elasticsearch { 
    index => "test-shakespeare-italian" 
    action => "update" 
    document_id => "OOW-j2DeSCmnsVWVsywOVQ" 
    hosts => "localhost:9200" 
    version => "1" 
    } 
    #stdout { codec => rubydebug } 
} 

まず私は、バージョンフィールドを使用していませんでしたが、これにより、次のエラーが発生しました。

[2017-10-13T11:29:25,464][WARN ][logstash.outputs.elasticsearch] Failed action. {:status=>409, :action=>["update", {:_id=>"OOW-j2DeSCmnsVWVsywOVQ", :_index=>"test-shakespeare-italian", :_type=>"logs", :_routing=>nil, :_retry_on_conflict=>1}, 2017-10-12T13:05:08.907Z %{host} %{message}], :response=>{"update"=>{"_index"=>"test-shakespeare-italian", "_type"=>"logs", "_id"=>"OOW-j2DeSCmnsVWVsywOVQ", "status"=>409, "error"=>{"type"=>"version_conflict_engine_exception", "reason"=>"[logs][OOW-j2DeSCmnsVWVsywOVQ]: version conflict, current version [17901] is different than the one provided [17900]", "index_uuid"=>"OOW-j2DeSCmnsVWVsywOVQ", "shard"=>"3", "index"=>"test-shakespeare-italian"}}}} 

次にバージョンフィールドを追加しましたがパイプラインは次のエラーで失敗します。

[2017-10-13T11:38:39,467][ERROR][logstash.outputs.elasticsearch] Encountered an unexpected error submitting a bulk request! Will retry. {:error_message=>"undefined method `sanitized' for \"http://localhost:9200/_bulk\":String", :class=>"NoMethodError", :backtrace=>["/usr/local/Cellar/logstash/5.6.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-7.4.0-java/lib/logstash/outputs/elasticsearch/common.rb:249:in `safe_bulk'", "/usr/local/Cellar/logstash/5.6.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-7.4.0-java/lib/logstash/outputs/elasticsearch/common.rb:119:in `submit'", "/usr/local/Cellar/logstash/5.6.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-7.4.0-java/lib/logstash/outputs/elasticsearch/common.rb:87:in `retrying_submit'", "/usr/local/Cellar/logstash/5.6.2/libexec/vendor/bundle/jruby/1.9/gems/logstash-output-elasticsearch-7.4.0-java/lib/logstash/outputs/elasticsearch/common.rb:38:in `multi_receive'", "/usr/local/Cellar/logstash/5.6.2/libexec/logstash-core/lib/logstash/output_delegator_strategies/shared.rb:13:in `multi_receive'", "/usr/local/Cellar/logstash/5.6.2/libexec/logstash-core/lib/logstash/output_delegator.rb:49:in `multi_receive'", "/usr/local/Cellar/logstash/5.6.2/libexec/logstash-core/lib/logstash/pipeline.rb:436:in `output_batch'", "org/jruby/RubyHash.java:1342:in `each'", "/usr/local/Cellar/logstash/5.6.2/libexec/logstash-core/lib/logstash/pipeline.rb:435:in `output_batch'", "/usr/local/Cellar/logstash/5.6.2/libexec/logstash-core/lib/logstash/pipeline.rb:381:in `worker_loop'", "/usr/local/Cellar/logstash/5.6.2/libexec/logstash-core/lib/logstash/pipeline.rb:342:in `start_workers'"]} 

オンライン OKを与えた場合、パイプラインは完璧に動作します

これはバグだと私につながります。私のせいではありません。 残念ながら、これらのリンクには実際のソリューションはありません。古いバージョンのlogstashに戻す必要がありますか?他のアイデア?

答えて

0

最終結果をstdoutで取得し、バルクAPIで適用すると機能しますか?

私はそれがどのように私はバルクのAPIと同じインデックスを更新することができ

+0

フィルタ処理した後、最終的なJSONに問題がある必要があります考えていますか? ところで、私は他の方法を探してみました。バルクAPIとスクリプトフィールドを使ってSECONDSでこれを実現しました。 logstashでインデックスを更新するのが複雑な場合は、毎回新しいインデックスを作成するだけで済みます。データを頻繁に変更する予定はありません。 それは良いアイデアですか? – user3753342

関連する問題