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 操作支持不同数据类型的隐式类型转换。
标量函数 | 二元比较 | 算术运算 | In 列表谓词 | 聚合函数 | ||
---|---|---|---|---|---|---|
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 |