[[query-dsl-range-query]] === Range query ++++ Range ++++ Returns documents that contain terms within a provided range. [[range-query-ex-request]] ==== Example request The following search returns documents where the `age` field contains a term between `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` ``:: + -- (Required, object) Field you wish to search. -- [[range-query-field-params]] ==== Parameters for `` `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 <> provided in the ``'s mapping. This value overrides that mapping format. For valid syntax, see <>. [WARNING] ==== If a `format` and `date` value are incomplete, {es} replaces any missing year, month, or day component with the {wikipedia}/Unix_time[Unix epoch], which is January 1st, 1970. For example, if the `format` value is `dd`, {es} converts a `gte` value of `22` to `1970-01-22T00:00:00.000Z`. This date uses `22` as the day of the month but uses the Unix epoch's year (`1970`) and month (`01`). ==== -- [[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 Universal Time (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 IANA time zone IDs, such as `America/Los_Angeles`. For an example query using the `time_zone` parameter, see <>. [NOTE] ==== The `time_zone` parameter does **not** affect the <> value of `now`. `now` is always the current system time in UTC. However, the `time_zone` parameter does convert dates calculated using `now` and <>. For example, the `time_zone` parameter will convert a value of `now/d`. ==== -- `boost`:: + -- (Optional, float) Floating point number used to decrease or increase the <> of a query. Defaults to `1.0`. You can use the `boost` parameter to adjust relevance scores for searches containing 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` fields Range queries on <> or <> fields will not be executed if <> is set to false. [[ranges-on-dates]] ===== Using the `range` query with `date` fields When the `` parameter is a <> field data type, you can use <> with the following parameters: * `gt` * `gte` * `lt` * `lte` For example, the following search returns documents where the `timestamp` field contains 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 <> 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`, excluding the 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`, including the 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`, excluding the 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`, including the entire month. -- [[range-query-time-zone]] ===== Example query using `time_zone` parameter You can use the `time_zone` parameter to convert `date` values to UTC using a UTC 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.