Обновить поле вложенной строки
Я пытаюсь обновить поле image.uri
от _update_by_query
:
POST user/_update_by_query
{
"script": {
"source": "ctx._source.image.uri = 'https://example.com/default/image/profile.jpg'",
"lang": "painless"
},
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "image.id"
}
}
]
}
}
}
Но это выдает ошибку:
{
"error": {
"root_cause": [
{
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"ctx._source.image.uri = 'https://example.com/default/image/profile.jpg'",
" ^---- HERE"
],
"script": "ctx._source.image.uri = 'https://example.com/default/image/profile.jpg'",
"lang": "painless"
}
],
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"ctx._source.image.uri = 'https://example.com/default/image/profile.jpg'",
" ^---- HERE"
],
"script": "ctx._source.image.uri = 'https://example.com/default/image/profile.jpg'",
"lang": "painless",
"caused_by": {
"type": "null_pointer_exception",
"reason": null
}
},
"status": 500
}
Образец документа:
{
"image": {
"uri": "https://example.com/resources/uploads/default_files/profile/thumb/large/default_profile.jpg"
},
"created": "2018-06-06T21:49:26Z",
"uid": 1,
"name": "Jason Cameron",
"username": "jason"
}
1 ответ
ОБНОВЛЕННЫЙ ОТВЕТ
Проблема может исходить из документа без image
объект в этом.
Попробуй добавить strict
отображение, если возможно, чтобы избежать индексации документов без image
объект.
СТАРЫЙ ОТВЕТ /"\" правильно использовать внутри безболезненного скрипта в качестве строки
Ваша проблема приходит как использование '
чтобы инкапсулировать ваш URI, строки должны быть заключены в "
,
Попробуйте изменить ваш скрипт как:
"script": {
"source": "ctx._source.image.uri = \"https://example.com/default/image/profile.jpg\"",
"lang": "painless"
}