当我使用ES 5.5时,更新为6.7。 无痛脚本不起作用
这是5.5 如果要获取嵌套文档[transFilter] 我这样做
params['_source’]['carFilter’]
效果很好。
但是
我使用6.7版本
params ['_ source'] ['carFilter']
我发现它不起作用
所有参数['_source']为空
我的映射
carFilter": {
"type": "nested","properties": {
"time": {
"type": "long"
}
}
}
我的数据示例
"carFilter" : [
{
"time" : 20200120
},{
"time" : 20200121
}
]
和我的查询脚本示例
{
"query" : {
"bool" : {
"must" : [
{
"script" : {
"script" : {
"inline" : "if(params['_source']!=null){
if(params['_source']['carFilter']!=null){
for(def item:params['_source']['carFilter'] ){
if (item.time>1) { return true; }
}
}
}
return false;","lang" : "painless","params" : {
"rentTime" : 1000
}
}
}
}
]
}
}
}
即使没有错误 但事实
if(params['_source']!=null){
此行已经返回
上面简单无痛的方法只是为了说明问题,下面是一个相对真实的内容。
double carprice=0.00;if(!params['_source'].empty){"+
" def days=params['_source']['everyDayPrice'];if(params['_source']['everyDayPrice']!=null){int size=days.length;" +
" if(size>0){for(int i=0;i<size;i++){String day = days[i]['day'];Double price = days[i]['price'];"+
" if(price!=null&¶ms.get(day)!=null){carprice=carprice+params.get(day)*price;}}}}}" +
" return carprice/params.total"