es 待解决

使用script更新数组数据时 script如下

StringSCRIPT_TEMPLATE_FOR_ADD_ARRAY_INFO ="if(ctx._source.containsKey('%s')){if(!ctx._source.%s.contains(params.%s)){ctx._source.%s.add(params.%s)}} else {ctx._source.%s =[params.%s]}";

StringSCRIPT_TEMPLATE_FOR_REMOVE_ARRAY_INFO ="if(ctx._source.%s.contains(params.%s)){ ctx._source.%s.remove(ctx._source.%s.indexOf(params.%s))}";


es 待解决_第1张图片

其中 use_limit_category的mapping为long类型,但是params中value为long或Long时 脚本执行不正确,数组中存在一个值时仍然执行add操作,remove同理   改为Integer时正常,猜测 mapping中type 为long 但 es存储为java.long.Integer

你可能感兴趣的:(es 待解决)