Я использую ниже встроенный скрипт с обновлением по запросу, чтобы обновить 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'];"
}
}
Проблема в том, что некоторые документы вообще не имеют этого поля lastModifiedDate
. Поэтому, когда бы он ни встречался с таким документом, он терпел неудачу с выражением нулевого указателя. Есть ли способ игнорировать такие документы и обновлять тот, где он находится?
РЕДАКТИРОВАТЬ: Публикация ошибки, которую я получаю ниже:
{"ошибка": {
"первопричина": [
{
"type": "script_exception",
«причина»: «ошибка времени выполнения»,
"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",
«причина»: «ошибка времени выполнения»,
"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": "null_pointer_exception",
"причина": ноль
}}, "status": 500}
Ожидается, что если один из идентификаторов не имеет поля fields
, я хочу, чтобы оно было проигнорировано, и скрипт обновил остальные документы, в которых найдено поле fields
. Это возможно?