嵌套的mvel脚本更新

时间:2015-05-05 00:51:40

标签: elasticsearch mvel

我正在使用此表达式更新嵌套文档:

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

但它总是说classcastexception boolean不能转换为String。我尝试将真实置于一个参数中,尝试'T','true','TRUE',TRUE,1。

用尽了想法。

文件样本:

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

我也尝试过更改“id”来测试,它告诉我我不能将HashMap转换成字符串

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

1 个答案:

答案 0 :(得分: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  }"
}'