Я только начал с ES и все еще пользуюсь уловками торговли !!!
Мне нужно заменить / переписать одно из полей типа вложенного объекта.
Вот пример документа:
{
"name":"db_ref",
"ref_counter":[
{"ref_name":"test1","count":1},
{"ref_name":"test2","count":2},
{"ref_name":"test3","count":3}
]
}
Отображение для вышеупомянутого документа:
{
"settings": {
"mappings": {
"test_doc": {
"properties": {
"name": {
"type": "string"
},
"ref_count": {
"type": "nested",
"ref_name": "string",
"count": "long"
}
}
}
}
}
}
Мне нужно обновить значение поля count для данного ref_name. Например, в приведенном выше случае, если ref_name равно " test1 ", я хочу, чтобы новый count был 500 .
Я предложил приведенный ниже безболезненный скрипт для изменения значения count , он прекрасно работает без каких-либо ошибок, но я не вижу, чтобы значение обновлялось.
curl -XPOST "http://localhost:9200/test_type/test_type/test_db/_update" -d '
{"script": "if (ctx._source.ref_counter.ref_name == cur_ref
&& ctx._source.ref_counter.count == cur_count)
{ctx._source.ref_counter.count = new_count };",
"params": {"cur_count": 1,"new_count": 500, "cur_ref": "test1"}}}'
Ниже приведен ответ:
{"_index":"test_index","_type":"test_type","_id":"test_db","_version":2}
Но когда я вижу документ, он все еще имеет старые значения.
Может кто-нибудь помочь мне перевести значение счетчика на новое значение.