如何向 Elasticsearch 中的现有数组字段添加新元素

pra*_* kp 1 elasticsearch

嗨下面是我的文件

 "catid": [
           514500
          ],
 "studentid": 5282439,
Run Code Online (Sandbox Code Playgroud)

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

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

POST /parts/_update_by_query
{
  "query": {
     "match": {
        "studentid": 5282439
     }
  },
  "script" : "ctx._source.catid+= [543 ]"
}
 
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

"root_cause": [
   {
      "type": "class_cast_exception",
      "reason": "java.lang.String cannot be cast to java.util.Map"
    }
 ]
Run Code Online (Sandbox Code Playgroud)

pra*_* kp 5

--> 如果上面的答案不起作用试试这个

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

  • 请考虑添加关于 *** 为什么 *** 这是答案的解释。 (2认同)