2015-05-05 3 views
0

Я использую это выражение для обновления вложенного документа:Уплотненного обновление mvel сценария

curl -XPOST 'localhost:9200/event/docs/cPd4cfqGTe2Hw9sq0qs_NQ/_update' -d '{ 
"script": "foreach (item : ctx._source.to) { item['read'] = true }" 
}' 

Но он всегда говорит ClassCastException логическое не может быть преобразован в String. Я попытался поставить истину в параме, попробовал «T», «true», «TRUE», TRUE, 1.

Выполнение идей.

Образец документа:

{ 
    "prop":"test" 
    "to": [{"id": "1", "read":false}, 
      {"id":"2","read": true}] 
} 

Я также попытался изменить «идентификатор» только для проверки, и это говорит мне, что я не могу бросить HashMap в строку

curl -XPOST 'localhost:9200/event/docs/cPd4cfqGTe2Hw9sq0qs_NQ/_update' -d '{ 
    "script": "foreach (item : ctx._source.to) { item['id'] = '3' }", 
}' 

ответ

1

Сценарий отправлен UPDATE API не является правильным. я исправил сценарий -

curl -XPOST 'http://localhost:9200/vm/vm/vm' -d '{ 
    "prop":"test",                        
    "to": [{"id": "1", "read":false}, 
      {"id":"2","read": true}] 
}' 

И на обновления, используйте ниже сценарий -

curl -XPOST 'localhost:9200/vm/vm/vm/_update' -d '{ 
    "script": "for (item in ctx._source.to) { item.id = 4 }" 
}'