ES|QL implicit casting

edit

Often 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

edit

The 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