ES|QL 隐式转换
编辑ES|QL 隐式转换编辑
用户经常会在查询中输入 datetime
、ip
、version
或地理空间对象作为简单的字符串,用于谓词、函数或表达式。ES|QL 提供 类型转换函数,以显式地将这些字符串转换为所需的数据类型。
如果没有隐式转换,用户必须在查询中显式地编写这些 to_X
函数,当字符串字面量与它们被分配或比较的目标数据类型不匹配时。以下是一个使用 to_datetime
显式执行数据类型转换的示例。
FROM employees | EVAL dd_ns1=date_diff("day", to_datetime("2023-12-02T11:00:00.00Z"), birth_date) | SORT emp_no | KEEP dd_ns1 | LIMIT 1
隐式转换通过自动将字符串字面量转换为目标数据类型来提高可用性。当目标数据类型为 datetime
、ip
、version
或地理空间时,这最为有用。在查询中将这些指定为字符串是自然的。
第一个查询可以在不调用 to_datetime
函数的情况下进行编码,如下所示
FROM employees | EVAL dd_ns1=date_diff("day", "2023-12-02T11:00:00.00Z", birth_date) | SORT emp_no | KEEP dd_ns1 | LIMIT 1
隐式转换支持编辑
下表详细说明了哪些 ES|QL 操作支持对不同数据类型的隐式转换。
标量函数 | 二元比较 | 算术运算 | 列表谓词 | 聚合函数 | ||
---|---|---|---|---|---|---|
DATETIME |
Y |
Y |
Y |
Y |
N |
|
DOUBLE |
Y |
N |
N |
N |
N |
|
LONG |
Y |
N |
N |
N |
N |
|
INTEGER |
Y |
N |
N |
N |
N |
|
IP |
Y |
Y |
Y |
Y |
N |
|
VERSION |
Y |
Y |
Y |
Y |
N |
|
GEO_POINT |
Y |
N |
N |
N |
N |
|
GEO_SHAPE |
Y |
N |
N |
N |
N |
|
CARTESIAN_POINT |
Y |
N |
N |
N |
N |
|
CARTESIAN_SHAPE |
Y |
N |
N |
N |
N |
|
BOOLEAN |
Y |
Y |
Y |
Y |
N |