Я конвертирую скрипт 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()
"""
}
}
}
}