ES|QL Cheat Sheet

ES|QL (Elasticsearch Query Language) is a piped query language for filtering, transforming, and analyzing data in Elasticsearch. It chains commands sequentially using pipe (|) syntax, where each command processes the output of the previous one. ES|QL is powered by a dedicated compute engine built for concurrent processing, operating on blocks of data rather than individual rows for high performance.

This cheat sheet covers every ES|QL source command, processing command, function, and operator searchable and organized by category. Use it as a quick reference while writing queries in Kibana Discover, Dev Tools, or the _query REST API.

Source Commands

3 commands

Source commands generate the initial table for an ES|QL query. Every query begins with one of these.

FROMFROM index_pattern [METADATA _id, _index]
ROWROW column1 = value1[, column2 = value2, ...]
SHOWSHOW INFO

Processing Commands

19 commands

Processing commands modify the input table by adding, removing, or changing rows and columns. Chain them with | pipes.

WHEREWHERE condition
EVALEVAL [col1 =] val1[, ..., [colN =] valN]
STATS...BYSTATS [col =] expr [BY grouping_expr]
SORTSORT column1 [ASC|DESC][, column2 ...]
LIMITLIMIT max_rows
KEEPKEEP column1[, column2, ...]
DROPDROP column1[, column2, ...]
RENAMERENAME old_name AS new_name
DISSECTDISSECT column "%{pattern}"
GROKGROK column "%{PATTERN:field}"
ENRICHENRICH policy [ON field] [WITH cols]
MV_EXPANDMV_EXPAND column
LOOKUP JOINLOOKUP JOIN index ON field
INLINE STATSINLINE STATS expr BY grouping_expr
FORKFORK (branch1) (branch2) [...]
FUSEFUSE [RRF | LINEAR]
SAMPLESAMPLE probability
RERANKRERANK "query" ON field BY model
COMPLETIONCOMPLETION "prompt" WITH model

Aggregate Functions

15 functions

Used inside STATS commands to compute summaries across rows.

AVGAVG(expression)
COUNTCOUNT([expression])
COUNT_DISTINCTCOUNT_DISTINCT(expr[, precision])
MAXMAX(expression)
MEDIANMEDIAN(expression)
MEDIAN_ABSOLUTE_DEVIATIONMEDIAN_ABSOLUTE_DEVIATION(expr)
MINMIN(expression)
PERCENTILEPERCENTILE(expression, percentile)
SUMSUM(expression)
TOPTOP(field, limit, order)
WEIGHTED_AVGWEIGHTED_AVG(expression, weight)
VALUESVALUES(field)
ST_CENTROID_AGGST_CENTROID_AGG(geo_field)
EARLIESTEARLIEST(field)
LATESTLATEST(field)

Grouping Functions

2 functions

Used in the BY clause of STATS to create groups or buckets.

BUCKETBUCKET(expression, buckets, from, to)
CATEGORIZECATEGORIZE(field)

String Functions

18 functions

Functions for manipulating, searching, and transforming text values.

CONCATCONCAT(str1, str2[, ..., strN])
ENDS_WITHENDS_WITH(string_field, suffix)
FROM_BASE64FROM_BASE64(string)
LEFTLEFT(str, length)
LENGTHLENGTH(str)
LOCATELOCATE(string, substring, start)
LTRIMLTRIM(string)
REPEATREPEAT(string, number)
REPLACEREPLACE(str, regex, newStr)
RIGHTRIGHT(string, length)
RTRIMRTRIM(string)
SPLITSPLIT(string, delim)
STARTS_WITHSTARTS_WITH(string_field, prefix)
SUBSTRINGSUBSTRING(string, start, length)
TO_BASE64TO_BASE64(string)
TO_LOWERTO_LOWER(string)
TO_UPPERTO_UPPER(string)
TRIMTRIM(string)

Date-Time Functions

8 functions

Functions for parsing, formatting, comparing, and extracting parts of date and time values.

DATE_DIFFDATE_DIFF(unit, startTs, endTs)
DATE_EXTRACTDATE_EXTRACT(datePart, date)
DATE_FORMATDATE_FORMAT(dateFormat, date)
DATE_PARSEDATE_PARSE(datePattern, dateString)
DATE_TRUNCDATE_TRUNC(interval, date)
DAY_OF_WEEKDAY_OF_WEEK(date)
MONTH_NAMEMONTH_NAME(date)
NOWNOW()

Math Functions

25 functions

Numeric and mathematical computation functions for use in EVAL and other expressions.

ABSABS(number)
ACOSACOS(number)
ASINASIN(number)
ATANATAN(number)
ATAN2ATAN2(y, x)
CBRTCBRT(number)
CEILCEIL(number)
COSCOS(angle)
COSHCOSH(number)
EE()
EXPEXP(number)
FLOORFLOOR(number)
HYPOTHYPOT(a, b)
LOGLOG(base, value)
LOG10LOG10(number)
PIPI()
POWPOW(base, exponent)
ROUNDROUND(number[, decimals])
SIGNUMSIGNUM(number)
SINSIN(angle)
SINHSINH(number)
SQRTSQRT(number)
TANTAN(angle)
TANHTANH(number)
TAUTAU()

Conditional Functions

7 functions

Functions that return values based on conditions, evaluated in if-else manner.

CASECASE(cond1, val1[, ..., default])
COALESCECOALESCE(expr1, expr2[, ...])
GREATESTGREATEST(val1, val2[, ...])
LEASTLEAST(val1, val2[, ...])
CLAMPCLAMP(value, min, max)
CLAMP_MINCLAMP_MIN(value, min)
CLAMP_MAXCLAMP_MAX(value, max)

Multivalue Functions

17 functions

Functions for working with fields that contain multiple values. ES|QL fields can hold more than one value.

MV_APPENDMV_APPEND(field1, field2)
MV_AVGMV_AVG(number_field)
MV_CONCATMV_CONCAT(field, delim)
MV_COUNTMV_COUNT(field)
MV_DEDUPEMV_DEDUPE(field)
MV_EXCEPTMV_EXCEPT(field1, field2)
MV_FIRSTMV_FIRST(field)
MV_INTERSECTMV_INTERSECT(field1, field2)
MV_LASTMV_LAST(field)
MV_MAXMV_MAX(field)
MV_MEDIANMV_MEDIAN(number_field)
MV_MINMV_MIN(field)
MV_SLICEMV_SLICE(field, start[, end])
MV_SORTMV_SORT(field[, order])
MV_SUMMV_SUM(number_field)
MV_UNIONMV_UNION(field1, field2)
MV_ZIPMV_ZIP(field1, field2, delim)

Type Conversion Functions

15 functions

Convert values between data types. The :: cast operator is a shorthand alternative (e.g. field::string).

TO_BOOLEANTO_BOOLEAN(field)
TO_CARTESIANPOINTTO_CARTESIANPOINT(field)
TO_CARTESIANSHAPETO_CARTESIANSHAPE(field)
TO_DATETIMETO_DATETIME(field)
TO_DEGREESTO_DEGREES(number)
TO_DOUBLETO_DOUBLE(field)
TO_GEOPOINTTO_GEOPOINT(field)
TO_GEOSHAPETO_GEOSHAPE(field)
TO_INTEGERTO_INTEGER(field)
TO_IPTO_IP(field)
TO_LONGTO_LONG(field)
TO_RADIANSTO_RADIANS(number)
TO_STRINGTO_STRING(field)
TO_UNSIGNED_LONGTO_UNSIGNED_LONG(field)
TO_VERSIONTO_VERSION(field)

Operators

17 operators

Comparison, logical, and pattern-matching operators for use in WHERE, EVAL, and other expressions.

==field == value
!=field != value
<field < value
<=field <= value
>field > value
>=field >= value
ANDcondition1 AND condition2
ORcondition1 OR condition2
NOTNOT condition
IS NULLfield IS NULL
IS NOT NULLfield IS NOT NULL
INfield IN (val1, val2[, ...])
LIKEfield LIKE "pattern*"
RLIKEfield RLIKE "regex"
::field::type (cast shorthand)
MATCHfield : "search text"
+ - * / %Arithmetic operators

Start Your Journey Today

Need Help with Your Elastic Stack?

From Elasticsearch implementation to managed services our Elastic specialists can help you get more from your data.

Kibana logo
Elasticsearch logo
Elastic observability logo
Elastic expert logo

Frequently Asked Questions (FAQs)

ES|QL (Elasticsearch Query Language) is a piped query language for filtering, transforming, and analyzing data in Elasticsearch. It uses a sequential pipe syntax where each command processes the output of the previous one, similar to Unix pipes. ES|QL runs on a dedicated compute engine that processes data in blocks with concurrent multithreading, delivering high performance regardless of data source or structure. You can use ES|QL through the _query REST endpoint, Kibana Discover, Dashboards, Dev Tools, and Elastic Security and Observability analysis tools.

Planning an Elastic Deployment? Get the Official Checklist (Free PDF)

Reduce risks, improve performance, accelerate go-live.