维护一组值
Maintaining a set of values
在我的文档中,我在字段 setValues 下维护一个集合。我可以使用 update API script support 向它添加值,但是如果该元素已经存在,它会在插入时向该值添加重复元素。所以我想添加一个元素,如果它不存在于数组中的话。我怎样才能模拟这个集合操作。
假设这是我的领域:
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数组中,因为这个条目已经存在,所以不应该添加新元素。但是如果我尝试添加一个数组中不存在的元素,它应该添加并得到更新。
您需要在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"
}
}
}'
在我的文档中,我在字段 setValues 下维护一个集合。我可以使用 update API script support 向它添加值,但是如果该元素已经存在,它会在插入时向该值添加重复元素。所以我想添加一个元素,如果它不存在于数组中的话。我怎样才能模拟这个集合操作。
假设这是我的领域:
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数组中,因为这个条目已经存在,所以不应该添加新元素。但是如果我尝试添加一个数组中不存在的元素,它应该添加并得到更新。
您需要在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"
}
}
}'