[[esql-getting-started]]
== Getting started with {esql}
++++
Getting started
++++
A simple example of an {esql} query is shown below:
[source,esql]
----
FROM employees
| EVAL age = DATE_DIFF(NOW(), birth_date, 'Y')
| STATS AVG(age) BY department
| SORT age DESC
----
Each {esql} query starts with a <>. A source command produces
a table, typically with data from {es}.
image::images/esql/source-command.svg[A source command producing a table from {es},align="center"]
A source command can be followed by one or more
<>. Processing commands change an
input table by adding, removing, or changing rows and columns.
Processing commands can perform filtering, projection, aggregation, and more.
image::images/esql/processing-command.svg[A processing command changing an input table,align="center"]
You can chain processing commands, separated by a pipe character: `|`. Each
processing command works on the output table of the previous command.
image::images/esql/chaining-processing-commands.svg[Processing commands can be chained,align="center"]
The result of a query is the table produced by the final processing command.