我只是在项目不在列表中时才尝试更新列表字段。
错误:
curl -X POST 'http://localhost:9200/my_index/my_doc/id/_update' -d
'{ "script":
"{if !(ctx._source.my_field contains new_item) {ctx._source.my_field.add(new_item)}}"
, "params":{"new_item":"hopefully_new_text"}}'
无论如何都会添加项目,即使它存在。
任何更聪明的方法吗?
答案 0 :(得分:1)
这是关于MVEL解析行为的许多奇怪的事情之一。如果您要移除最外面的{
}
,您会发现if语句中存在语法错误,如果您将修复该错误,一切都会正常工作:
curl -X POST 'http://localhost:9200/my_index/my_doc/id/_update' -d '{
"script": "if (!(ctx._source.my_field contains new_item)) {ctx._source.my_field.add(new_item)}",
"params": {
"new_item": "hopefully_new_text"
}
}
'