我正在使用此表达式更新嵌套文档:
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' }",
}'
答案 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 }"
}'