Range data types
editRange data types
editThe following range types are supported:
|
A range of signed 32-bit integers with a minimum value of |
|
A range of single-precision 32-bit IEEE 754 floating point values. |
|
A range of signed 64-bit integers with a minimum value of |
|
A range of double-precision 64-bit IEEE 754 floating point values. |
|
A range of date values represented as unsigned 64-bit integer milliseconds elapsed since system epoch. |
|
A range of ip values supporting either IPv4 or IPv6 (or mixed) addresses. |
Below is an example of configuring a mapping with various range fields followed by an example that indexes several range types.
PUT range_index { "settings": { "number_of_shards": 2 }, "mappings": { "properties": { "expected_attendees": { "type": "integer_range" }, "time_frame": { "type": "date_range", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } } PUT range_index/_doc/1?refresh { "expected_attendees" : { "gte" : 10, "lte" : 20 }, "time_frame" : { "gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01" } }
|
|
Example indexing a meeting with 10 to 20 attendees. |
|
Date ranges accept the same format as described in date range queries. |
|
Example date range using date time stamp. This also accepts date math formatting. Note that "now" cannot be used at indexing time. |
The following is an example of a term query on the integer_range
field named "expected_attendees".
GET range_index/_search { "query" : { "term" : { "expected_attendees" : { "value": 12 } } } }
The result produced by the above query.
{ "took": 13, "timed_out": false, "_shards" : { "total": 2, "successful": 2, "skipped" : 0, "failed": 0 }, "hits" : { "total" : { "value": 1, "relation": "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "range_index", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "expected_attendees" : { "gte" : 10, "lte" : 20 }, "time_frame" : { "gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01" } } } ] } }
The following is an example of a date_range
query over the date_range
field named "time_frame".
GET range_index/_search { "query" : { "range" : { "time_frame" : { "gte" : "2015-10-31", "lte" : "2015-11-01", "relation" : "within" } } } }
Range queries work the same as described in range query. |
|
Range queries over range fields support a |
This query produces a similar result:
{ "took": 13, "timed_out": false, "_shards" : { "total": 2, "successful": 2, "skipped" : 0, "failed": 0 }, "hits" : { "total" : { "value": 1, "relation": "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "range_index", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "expected_attendees" : { "gte" : 10, "lte" : 20 }, "time_frame" : { "gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01" } } } ] } }
IP Range
editIn addition to the range format above, IP ranges can be provided in CIDR notation:
PUT range_index/_mapping { "properties": { "ip_allowlist": { "type": "ip_range" } } } PUT range_index/_doc/2 { "ip_allowlist" : "192.168.0.0/16" }
Parameters for range fields
editThe following parameters are accepted by range types:
Try to convert strings to numbers and truncate fractions for integers.
Accepts |
|
Mapping field-level query time boosting. Accepts a floating point number, defaults
to |
|
Should the field be searchable? Accepts |
|
Whether the field value should be stored and retrievable separately from
the |