2016-08-29 11 views
0

私は、logstashで弾性検索出力を使用している問題に直面しています。ここで私は、この更新が発生したときにidを持つドキュメントが既にelasticsearch中に存在することを期待し、私のサンプルイベントelasticsearchのオブジェクトの配列の作成/更新logstashの出力

{ 
    "guid":"someguid", 
    "nestedObject":{ 
     "field1":"val1", 
     "field2":"val2" 
    } 
} 

です。ここ は、私が2つのアップサート後に私の弾性検索文書に持つようにしたいものです:

:ここ

elasticsearch { 
    index => "elastictest" 
    action => "update" 
    document_type => "summary" 
    document_id => "%{guid}" 
    doc_as_upsert => true 
    script_lang => "groovy" 
    script_type => "inline" 
    retry_on_conflict => 3 
    script => " 
    if (ctx._source.nestedObjects) { 
    ctx._source.nestedObjects += event.nestedObject 
    } else { 
    ctx._source.nestedObjects = [event.nestedObject] 
    } 
    " 
    } 

私は取得していますエラーされます。ここでは

{ 
    "oldField":"Some old field from original document before upserts." 
    "nestedObjects":[{ 
     "field1":"val1", 
     "field2":"val2" 
     }, 
     { 
     "field3":"val3", 
     "field4":"val4" 
     }] 
} 

私の現在の弾性検索出力設定があります

response=>{"update"=>{"_index"=>"elastictest", "_type"=>"summary", 
"_id"=>"64648dd3-c1e9-45fd-a00b-5a4332c91ee9", "status"=>400, 
"error"=>{"type"=>"mapper_parsing_exception", 
"reason"=>"failed to parse [event.nestedObject]", 
"caused_by"=>{"type"=>"illegal_argument_exception", 
"reason"=>"unknown property [field1]"}}}} 

答えて

0

フィールドnestedObjectの型が競合する同じdocument_typeを持つ他のドキュメントのため、elasticsearchで内部的にマッピングが生成されていました。これにより、エラスティックにマッパー解析例外がスローされました。これを修正し、この問題を修正しました。

関連する問題