Обновить поле вложенной строки

Я пытаюсь обновить поле 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"
  }
Другие вопросы по тегам