无痛(Elasticsearch)将任何类型的值转换为整数

时间:2018-04-10 15:08:46

标签: elasticsearch elasticsearch-painless

我正在将一个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()
        """
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

由于我可以看到这个问题仍然引起人们的兴趣,最终我能找到的最佳方法是:

Long.parseLong(params.my_val1.toString()) == Long.parseLong(params.my_val2.toString())