Each field has a
field data type
, or
field type
. This type indicates the
kind of data the field contains, such as strings or boolean values, and its
intended use. For example, you can index strings to both
text
and
keyword
fields. However,
text
field values are
analyzed
for full-text
search while
keyword
strings are left as-is for filtering and sorting.
Field types are grouped by
family
. Types in the same family have exactly the
same search behavior but may have different space usage or performance
characteristics.
Currently, there are two type families,
keyword
and
text
. Other type
families have only a single field type. For example, the
boolean
type family
consists of one field type:
boolean
.
In Elasticsearch, arrays do not require a dedicated field data type. Any field can contain
zero or more values by default, however, all values in the array must be of the
same field type. See
Arrays
.
It is often useful to index the same field in different ways for different
purposes. For instance, a
string
field could be mapped as
a
text
field for full-text search, and as a
keyword
field for
sorting or aggregations. Alternatively, you could index a text field with
the
standard
analyzer
, the
english
analyzer, and the
french
analyzer
.
This is the purpose of
multi-fields
. Most field types support multi-fields
via the
fields
parameter.