ES|QL implicit casting
editES|QL implicit casting
editOften users will input datetime
, ip
, version
, or geospatial objects as simple strings in their queries for use in predicates, functions, or expressions. ES|QL provides type conversion functions to explicitly convert these strings into the desired data types.
Without implicit casting users must explicitly code these to_X
functions in their queries, when string literals don’t match the target data types they are assigned or compared to. Here is an example of using to_datetime
to explicitly perform a data type conversion.
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
Implicit casting improves usability, by automatically converting string literals to the target data type. This is most useful when the target data type is datetime
, ip
, version
or a geo spatial. It is natural to specify these as a string in queries.
The first query can be coded without calling the to_datetime
function, as follows:
FROM employees | EVAL dd_ns1=date_diff("day", "2023-12-02T11:00:00.00Z", birth_date) | SORT emp_no | KEEP dd_ns1 | LIMIT 1
Implicit casting support
editThe following table details which ES|QL operations support implicit casting for different data types.
ScalarFunction | BinaryComparison | ArithmeticOperation | InListPredicate | AggregateFunction | ||
---|---|---|---|---|---|---|
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 |