[[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 date component with the start of https://en.wikipedia.org/wiki/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) https://en.wikipedia.org/wiki/List_of_UTC_time_offsets[Coordinated Universal Time (UTC) offset] or https://en.wikipedia.org/wiki/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-dates]] ===== Using the `range` query with `date` fields When the `` parameter is a <> field datatype, 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 lastest millisecond. For example, `2014-11-18||/M` rounds up to `2014-11-30T23:59:59.999`, excluding the entire month. -- `gte`:: + -- Rounds down to the first millisecond. For example, `2014-11-18||/M` rounds down to `2014-11-01`, including the entire month. -- `lt`:: + -- Rounds down to the first millisecond. For example, `2014-11-18||/M` rounds down to `2014-11-01`, excluding the entire month. -- `lte`:: + -- Rounds up to the lastest millisecond. 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": "2015-01-01 00:00:00", <2> "lte": "now" <3> } } } } ---- <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 `2014-12-31T23:00:00 UTC`. <3> The `time_zone` parameter does not affect the `now` value.