4

我正在将 Elasticsearch 脚本从 Groovy 转换为 Painless。该脚本接受一个参数,该参数可以是整数或可转换为整数的字符串(即可以是123"123")。

在 Groovy 中,执行my_val.toLong()转换两者都很好,但该方法在 Painless 中不可用。

是否有任何替代语法可以在 Painless 中做同样的事情?

我尝试使用(long) my_var进行显式转换,但我得到java.lang.String cannot be cast to java.lang.Number

简而言之,我想在 Painless 中执行以下操作并最终实现

GET _search
{
  "script_fields": {
    "test": {
      "script": {
        "lang": "groovy",
        "params": {
          "my_val1": "123",
          "my_val2": 123
        },
        "source": """
        my_val1.toLong() == my_val2.toLong()
        """
      }
    }
  }
}
4

1 回答 1

2

由于我可以看到这个问题仍然引起了一些兴趣,最后我能找到的最好方法是:

Long.parseLong(params.my_val1.toString()) == Long.parseLong(params.my_val2.toString())
于 2020-06-26T10:26:25.960 回答