如何将新元素添加到现有数组字段中

时间:2017-04-26 14:22:07

标签: elasticsearch

嗨,下面是我的文件

     "catid": [
                      514500
                   ],
 "studentid": 5282439,

在这个catid字段中,我想添加新元素543,其中studentid = 5282439

我正在尝试以下查询,但它给了我一个例外

POST /parts/_update_by_query
{
  "query": {
  "match": {
     "studentid": 5282439
  }
  },
  "script" : "ctx._source.catid+= [543 ]"
}

我收到以下异常,

"root_cause": [
         {
            "type": "class_cast_exception",
            "reason": "java.lang.String cannot be cast to java.util.Map"
         }
      ],

2 个答案:

答案 0 :(得分:3)

- >如果上述答案无效,请试试这个

POST /parts/_update_by_query
    {
      "query": {
        "match": {
          "studentid": 5282439
        }
      },
      "script" : {
          "lang":"painless",
         "inline": "ctx._source.catid.add(params.newsupp)",
         "params":{
             "newsupp":5302
      }
    }
    }

答案 1 :(得分:2)

脚本部分不正确,请将其更改为此(即将脚本移至script.inline属性):

POST /parts/_update_by_query
{
  "query": {
    "match": {
      "studentid": 5282439
    }
  },
  "script" : {
     "inline": "ctx._source.catid += [543 ]"
  }
}