在我的文档中,我在字段setValues下维护一个集合。我可以使用更新API脚本支持向其添加值,但是如果元素已经存在,则在插入时将重复元素添加到此值。所以我想添加一个元素,只要它不存在于数组中。如何模拟此设置操作。
假设这是我的字段:
setValues = [
{
color: "red",
value: "#f00"
},
{
color: "green",
value: "#0f0"
},
{
color: "blue",
value: "#00f"
},
{
color: "cyan",
value: "#0ff"
},
{
color: "magenta",
value: "#f0f"
},
{
color: "yellow",
value: "#ff0"
},
{
color: "black",
value: "#000"
}
]
这里,如果我想将以下元素添加到setValues
`{
color: "magenta",
value:#f0f
}
它应检查此元素是否已存在于setValue数组中,并且由于此条目已存在,因此不应添加新元素。但是如果我尝试添加一个数组中没有的元素,它应该添加并更新。
答案 0 :(得分:0)
您需要在Update API中使用脚本并遍历元素以查找是否存在重复元素。然后根据它,插入或不插入。
要应用的脚本
source = ctx._source
Boolean isAdded = false;
for(page in source.setValues){
if(page.name == newValue.name){
isAdded = true
}
}
if(!isAdded){
source.setValues += newValue
}
示例请求
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"script": "referAboveScript",
"params": {
"newValue": {
"color": "magenta",
"value": "#f0f"
}
}
}'