[discrete]
[[esql-keep]]
=== `KEEP`

**Syntax**

[source,esql]
----
KEEP columns
----

*Parameters*
`columns`::
A comma-separated list of columns to keep. Supports wildcards.

*Description*

The `KEEP` processing command enables you to specify what columns are returned
and the order in which they are returned.

*Examples*

The columns are returned in the specified order:

[source.merge.styled,esql]
----
include::{esql-specs}/docs.csv-spec[tag=keep]
----
[%header.monospaced.styled,format=dsv,separator=|]
|===
include::{esql-specs}/docs.csv-spec[tag=keep-result]
|===

Rather than specify each column by name, you can use wildcards to return all
columns with a name that matches a pattern:

[source,esql]
----
include::{esql-specs}/docs.csv-spec[tag=keepWildcard]
----

The asterisk wildcard (`*`) by itself translates to all columns that do not
match the other arguments. This query will first return all columns with a name
that starts with `h`, followed by all other columns:

[source,esql]
----
include::{esql-specs}/docs.csv-spec[tag=keepDoubleWildcard]
----
