| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | [discrete][[esql-grok]]=== `GROK``GROK` enables you to <<esql-process-data-with-dissect-and-grok,extractstructured data out of a string>>.**Syntax**[source,esql]----GROK input "pattern"----*Parameters*`input`::The column that contains the string you want to structure. If the column hasmultiple values, `GROK` will process each value.`pattern`::A grok pattern.If a field name conflicts with an existing column, the existing column is discarded.If a field name is used more than once, a multi-valued column will be created with one valueper each occurrence of the field name.*Description*`GROK` enables you to <<esql-process-data-with-dissect-and-grok,extractstructured data out of a string>>. `GROK` matches the string against patterns,based on regular expressions, and extracts the specified patterns as columns.Refer to <<esql-process-data-with-grok>> for the syntax of grok patterns.*Examples*// tag::examples[]The following example parses a string that contains a timestamp, an IP address,an email address, and a number:[source.merge.styled,esql]----include::{esql-specs}/docs.csv-spec[tag=basicGrok]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/docs.csv-spec[tag=basicGrok-result]|===By default, `GROK` outputs keyword string columns. `int` and `float` types canbe converted by appending `:type` to the semantics in the pattern. For example`{NUMBER:num:int}`:[source.merge.styled,esql]----include::{esql-specs}/docs.csv-spec[tag=grokWithConversionSuffix]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/docs.csv-spec[tag=grokWithConversionSuffix-result]|===For other type conversions, use <<esql-type-conversion-functions>>:[source.merge.styled,esql]----include::{esql-specs}/docs.csv-spec[tag=grokWithToDatetime]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/docs.csv-spec[tag=grokWithToDatetime-result]|===If a field name is used more than once, `GROK` creates a multi-valuedcolumn:[source.merge.styled,esql]----include::{esql-specs}/docs.csv-spec[tag=grokWithDuplicateFieldNames]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/docs.csv-spec[tag=grokWithDuplicateFieldNames-result]|===// end::examples[]
 |