我在下面的内联脚本中使用按查询进行更新,以弹性地更新.map
和时间戳approved=true
。
lastModifiedDate
问题是某些文档根本没有此字段POST /limp-access/_update_by_query
{
"query": {
"terms": {
"_id": [
"asdasfasf-laHg5qeld",
"asdfadfdfdsf-asdasd"
]
}
},
"script":{
"source": "ctx._source.approved = true; ctx._source.fields.lastModifiedDate = ['2019-05-21T06:16:05.133Z'];"
}
}
。因此,无论何时遇到此类文档,它都将失败并使用空指针表达式。有没有办法忽略此类文档并更新找到的文档?
编辑:发布以下错误:
{“错误”:{ “根本原因”: [ { “ type”:“ script_exception”, “ reason”:“运行时错误”, “ script_stack”:[ “ ctx._source.fields.lastModifiedDate = ['2019-05-21T06:16:05.133Z'];” ,, “ ^ ----这里” ], “ script”:“ ctx._source.approved = true; ctx._source.fields.lastModifiedDate = ['2019-05-21T06:16:05.133Z'];” ,, “ lang”:“无痛” } ], “ type”:“ script_exception”, “ reason”:“运行时错误”, “ script_stack”:[ “ ctx._source.fields.lastModifiedDate = ['2019-05-21T06:16:05.133Z'];” ,, “ ^ ----这里” ], “ script”:“ ctx._source.approved = true; ctx._source.fields.lastModifiedDate = ['2019-05-21T06:16:05.133Z'];” ,, “ lang”:“无痛”, “ caused_by”:{ “ type”:“ null_pointer_exception”, “原因”:null }},“状态”:500}
期望的是,如果其中一个ID没有字段lastModifiedDate
,我希望忽略它,并且脚本希望更新找到字段fields
的其余文档。这可能吗?
答案 0 :(得分:1)
然后只需像这样更新脚本:
"source": "ctx._source.approved = true; if (ctx._source.fields != null) { ctx._source.fields.lastModifiedDate = ['2019-05-21T06:16:05.133Z'];}"