2017-04-26 59 views
1

你好下面是我的文档如何将新的元素添加到现有阵列提起

 "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" 
     } 
     ], 

回答

1

脚本部分不正确,请将其改为(即)。移动脚本到script.inline属性):

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

瓦尔你好,谢谢,但是当我跑上面的查询m到处以下例外 –

+0

“type”:“class_cast_exception”, “reason”:“无法对[java.util.ArrayList]和[java.util.ArrayList]类型应用[+]操作。 –

+0

我正在使用ES 5.2.2版本 –

2

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

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

请考虑添加一个解释为什么***这是答案。 –