在项目中有个需求是判断第14位为5,因此用script来解决,当然 大于等于14位已先判断在ES中 同一个script换一个方式就会报错,
第一种 (报错)
{
"script": {
"script": "doc['cm_tx_log_no'].value.indexOf(53, 14)==14"
}
}
第二种 (不报错)
{
"script": {
"script": "doc['cm_tx_log_no'].value.indexOf('5', 14)==14"
}
}
报错信息:
"script": "doc['cm_tx_log_no'].value.indexOf(53, 14)==14",
"lang": "painless",
"caused_by": {
"type": "wrong_method_type_exception",
"reason": "cannot convert MethodHandle(String,String,int)int to (Object,int,int)Object"
}
关键是
53和'5' 不是一样的吗,String.indexOf 也支持数值类型参数,在IDEA中测试不报错,不懂他为什么一直要转换类型。 有没有大神帮忙解惑一下。
第一种 (报错)
{
"script": {
"script": "doc['cm_tx_log_no'].value.indexOf(53, 14)==14"
}
}
第二种 (不报错)
{
"script": {
"script": "doc['cm_tx_log_no'].value.indexOf('5', 14)==14"
}
}
报错信息:
"script": "doc['cm_tx_log_no'].value.indexOf(53, 14)==14",
"lang": "painless",
"caused_by": {
"type": "wrong_method_type_exception",
"reason": "cannot convert MethodHandle(String,String,int)int to (Object,int,int)Object"
}
关键是
53和'5' 不是一样的吗,String.indexOf 也支持数值类型参数,在IDEA中测试不报错,不懂他为什么一直要转换类型。 有没有大神帮忙解惑一下。
1 个回复
rochy - rochy_he
赞同来自:
53 是 int 类型, '5' 是 string 类型