如何解决在kibana控制台中不断收到此错误“找不到动态方法[java.util.HashMap,添加/ 1]”
我是Elasticsearch堆栈的新手...每当我尝试在Kibana Dev Tool Console中执行以下查询时,都会遇到以下提到的错误
- 在Kibana控制台中执行的查询
POST employees-details/_update_by_query
{
"query": {
"match": {
"EmpName": "Arvind"
}
},"script": {
"source": "ctx._source.Address.add(params.tag)","lang": "painless","params": {
"tag":{
"AddressID":144,"AddressNumber":458
}
}
}
}
在执行上述查询^^
时保持此错误\/
"caused_by" : {
"type" : "illegal_argument_exception","reason" : "dynamic method [java.util.HashMap,add/1] not found"
}
- 样本数据
[
{
"_index" : "employees-details","_type" : "_doc","_id" : "101","_score" : 1.0,"_source" : {
"EmpUserID" : 101,"Gender" : "Male","EmpName" : "John","Age" : 35
}
},{
"_index" : "employees-details","_id" : "106","_source" : {
"EmpUserID" : 106,"Address" : {
"AddressNumber" : 201,"AddressID" : 200
},"EmpName" : "Arvind","Age" : 30
}
}
]
- 使用的版本
木假名:7.9.3 elasticsearch:7.9.3
先谢谢了:)
解决方法
由于Address
是一个哈希,因此不能使用add()
方法(适用于数组,列表等集合)。相反,您需要先将Address
转换为列表,然后调用add()
:
POST employees-details/_update_by_query
{
"query": {
"match": {
"EmpName": "Arvind"
}
},"script": {
"source": "if (!(ctx._source.Address instanceof Collection)) {ctx._source.Address = [ctx._source.Address];} ctx._source.Address.add(params.tag)","lang": "painless","params": {
"tag":{
"AddressID":144,"AddressNumber":458
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。