| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 | [[query-dsl-range-query]]=== Range query++++<titleabbrev>Range</titleabbrev>++++Returns documents that contain terms within a provided range.[[range-query-ex-request]]==== Example requestThe following search returns documents where the `age` field contains a termbetween `10` and `20`.[source,console]----GET /_search{  "query": {    "range": {      "age": {        "gte": 10,        "lte": 20,        "boost": 2.0      }    }  }}----[[range-query-top-level-params]]==== Top-level parameters for `range``<field>`::+--(Required, object) Field you wish to search.--[[range-query-field-params]]==== Parameters for `<field>``gt`::(Optional) Greater than.`gte`::(Optional) Greater than or equal to.`lt`::(Optional) Less than.`lte`::(Optional) Less than or equal to.`format`::+--(Optional, string) Date format used to convert `date` values in the query.By default, {es} uses the <<mapping-date-format,date `format`>> provided in the`<field>`'s mapping. This value overrides that mapping format.For valid syntax, see <<mapping-date-format,`format`>>.[WARNING]====If a `format` and `date` value are incomplete, {es} replaces any missing year,month, or date component with the start of{wikipedia}/Unix_time[Unix time], which is January 1st, 1970.For example, if the `format` value is `dd`, {es} converts a `gte` value of `10`to `1970-01-10T00:00:00.000Z`.====--[[querying-range-fields]]`relation`::+--(Optional, string) Indicates how the range query matches values for `range`fields. Valid values are:`INTERSECTS` (Default)::Matches documents with a range field value that intersects the query's range.`CONTAINS`::Matches documents with a range field value that entirely contains the query's range.`WITHIN`::Matches documents with a range field value entirely within the query's range.--`time_zone`::+--(Optional, string){wikipedia}/List_of_UTC_time_offsets[Coordinated UniversalTime (UTC) offset] or{wikipedia}/List_of_tz_database_time_zones[IANA time zone]used to convert `date` values in the query to UTC.Valid values are ISO 8601 UTC offsets, such as `+01:00` or -`08:00`, and IANAtime zone IDs, such as `America/Los_Angeles`.For an example query using the `time_zone` parameter, see<<range-query-time-zone,Time zone in `range` queries>>.[NOTE]====The `time_zone` parameter does **not** affect the <<date-math,date math>> valueof `now`. `now` is always the current system time in UTC.However, the `time_zone` parameter does convert dates calculated using `now` and<<date-math,date math rounding>>. For example, the `time_zone` parameter willconvert a value of `now/d`.====--`boost`::+--(Optional, float) Floating point number used to decrease or increase the<<relevance-scores,relevance scores>> of a query. Defaults to `1.0`.You can use the `boost` parameter to adjust relevance scores for searchescontaining two or more queries.Boost values are relative to the default value of `1.0`. A boost value between`0` and `1.0` decreases the relevance score. A value greater than `1.0`increases the relevance score.--[[range-query-notes]]==== Notes[[ranges-on-text-and-keyword]]===== Using the `range` query with `text` and `keyword` fieldsRange queries on <<text, `text`>> or <<keyword, `keyword`>> fields will not be executed if<<query-dsl-allow-expensive-queries, `search.allow_expensive_queries`>> is set to false.[[ranges-on-dates]]===== Using the `range` query with `date` fieldsWhen the `<field>` parameter is a <<date,`date`>> field data type, you can use<<date-math,date math>> with the following parameters:* `gt`* `gte`* `lt`* `lte`For example, the following search returns documents where the `timestamp` fieldcontains a date between today and yesterday.[source,console]----GET /_search{  "query": {    "range": {      "timestamp": {        "gte": "now-1d/d",        "lt": "now/d"      }    }  }}----[[range-query-date-math-rounding]]====== Date math and rounding{es} rounds <<date-math,date math>> values in parameters as follows:`gt`::+--Rounds up to the first millisecond not covered by the rounded date.For example, `2014-11-18||/M` rounds up to `2014-12-01T00:00:00.000`, excludingthe entire month of November.--`gte`::+--Rounds down to the first millisecond.For example, `2014-11-18||/M` rounds down to `2014-11-01T00:00:00.000`, includingthe entire month.--`lt`::+--Rounds down to the last millisecond before the rounded value.For example, `2014-11-18||/M` rounds down to `2014-10-31T23:59:59.999`, excludingthe entire month of November.--`lte`::+--Rounds up to the latest millisecond in the rounding interval.For example, `2014-11-18||/M` rounds up to `2014-11-30T23:59:59.999`, includingthe entire month.--[[range-query-time-zone]]===== Example query using `time_zone` parameterYou can use the `time_zone` parameter to convert `date` values to UTC using aUTC offset. For example:[source,console]----GET /_search{  "query": {    "range": {      "timestamp": {        "time_zone": "+01:00",        <1>        "gte": "2020-01-01T00:00:00", <2>        "lte": "now"                  <3>      }    }  }}----// TEST[continued]<1> Indicates that `date` values use a UTC offset of `+01:00`.<2> With a UTC offset of `+01:00`, {es} converts this date to`2019-12-31T23:00:00 UTC`.<3> The `time_zone` parameter does not affect the `now` value.
 |