Field datatypesedit

Elasticsearch supports a number of different datatypes for the fields in a document:

Core datatypesedit

text and keyword
Numeric datatypes
long, integer, short, byte, double, float, half_float, scaled_float
Date datatype
date_nanos datatype
Boolean datatype
Binary datatype
Range datatypes
integer_range, float_range, long_range, double_range, date_range

Complex datatypesedit

Array datatype
Array support does not require a dedicated type
Object datatype
object for single JSON objects
Nested datatype
nested for arrays of JSON objects

Geo datatypesedit

Geo-point datatype
geo_point for lat/lon points
Geo-Shape datatype
geo_shape for complex shapes like polygons

Specialised datatypesedit

IP datatype
ip for IPv4 and IPv6 addresses
Completion datatype
completion to provide auto-complete suggestions
Token count datatype
token_count to count the number of tokens in a string
murmur3 to compute hashes of values at index-time and store them in the index
annotated-text to index text containing special markup (typically used for identifying named entities)
Percolator type
Accepts queries from the query-dsl
join datatype
Defines parent/child relation for documents within the same index
Alias datatype
Defines an alias to an existing field.
Rank feature datatype
Record numeric feature to boost hits at query time.
Rank features datatype
Record numeric features to boost hits at query time.
Dense vector datatype
Record dense vectors of float values.
Sparse vector datatype
Record sparse vectors of float values.


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 datatypes support multi-fields via the fields parameter.