Эластичное обновление поля с данными json
ОПУБЛИКОВАТЬ автомобили / _update_by_query
{
"query": {
"match_all": {}
},
"script": {
"inline": "ctx._source.addresses = [{country:'Country', countryCode : 'cr'}]",
"lang": "painless"
}
}
Сценарий выполнен успешно, ошибок не возникло, вывод приведен ниже, но ничего не обновляется.
{
"took" : 18092,
"timed_out" : false,
"total" : 400000,
"updated" : 400000,
"deleted" : 0,
"batches" : 400,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
Спасибо
1 ответ
Вместо этого ваш сценарий должен выглядеть так:
"inline": "ctx._source.addresses = [['country':'Country', 'countryCode' : 'cr']]",
Обратите внимание, что безболезненный не обрабатывает JSON напрямую, вместо этого вам нужно пройти через массивы и карты. В качестве доказательства, выполняя ваш запрос выше, я получаю следующую ошибку:
"script" : "ctx._source.addresses = [{country:'Country', countryCode : 'cr'}]",
"lang" : "painless",
"position" : {
"offset" : 25,
"start" : 0,
"end" : 50
},
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "invalid sequence of tokens near ['{'].",
"caused_by" : {
"type" : "no_viable_alt_exception",
"reason" : null
}
}