我正在将一个Elasticsearch脚本从Groovy转换为无痛。 该脚本接受一个参数,该参数可以是整数或可转换为整数的字符串(即可以是 123 或“123”)。
在Groovy中, my_val.toLong()转换两者都很好,但该方法在Painless中不可用。
是否有任何替代语法可以在Painless中执行相同的操作?
我尝试使用(long)my_var 进行显式转换,但是我得到 java.lang.String无法转换为java.lang.Number
简而言之,我想在Painless中执行以下操作并获得 true :
GET _search
{
"script_fields": {
"test": {
"script": {
"lang": "groovy",
"params": {
"my_val1": "123",
"my_val2": 123
},
"source": """
my_val1.toLong() == my_val2.toLong()
"""
}
}
}
}
答案 0 :(得分:1)
由于我可以看到这个问题仍然引起人们的兴趣,最终我能找到的最佳方法是:
Long.parseLong(params.my_val1.toString()) == Long.parseLong(params.my_val2.toString())