Creating/updating elasticsearch logstash 输出中的对象数组
Creating/updating array of objects in elasticsearch logstash output
我在使用带有 logstash 的弹性搜索输出时遇到问题。这是我的示例事件
{
"guid":"someguid",
"nestedObject":{
"field1":"val1",
"field2":"val2"
}
}
我希望在进行此更新时,带有 id 的文档已经存在于 elasticsearch 中。
这是 2 次更新后我想在我的弹性搜索文档中拥有的内容:
{
"oldField":"Some old field from original document before upserts."
"nestedObjects":[{
"field1":"val1",
"field2":"val2"
},
{
"field3":"val3",
"field4":"val4"
}]
}
这是我当前的弹性搜索输出设置:
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]
}
"
}
这是我遇到的错误:
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]"}}}}
问题原来是 elasticsearch 中内部生成的映射,因为其他具有相同 document_type 的文档在字段 nestedObject 上的类型存在冲突。这导致elastic抛出mapper解析异常。解决这个问题,解决这个问题。
我在使用带有 logstash 的弹性搜索输出时遇到问题。这是我的示例事件
{
"guid":"someguid",
"nestedObject":{
"field1":"val1",
"field2":"val2"
}
}
我希望在进行此更新时,带有 id 的文档已经存在于 elasticsearch 中。 这是 2 次更新后我想在我的弹性搜索文档中拥有的内容:
{
"oldField":"Some old field from original document before upserts."
"nestedObjects":[{
"field1":"val1",
"field2":"val2"
},
{
"field3":"val3",
"field4":"val4"
}]
}
这是我当前的弹性搜索输出设置:
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]
}
"
}
这是我遇到的错误:
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]"}}}}
问题原来是 elasticsearch 中内部生成的映射,因为其他具有相同 document_type 的文档在字段 nestedObject 上的类型存在冲突。这导致elastic抛出mapper解析异常。解决这个问题,解决这个问题。