维护一组值

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"
    }
  }
}'