Range query
Returns documents that contain terms within a provided range.
Example request
The following search returns documents where the age
field contains a term between 10
and 20
.
GET /_search
{
"query": {
"range": {
"age": {
"gte": 10,
"lte": 20,
"boost": 2.0
}
}
}
}
Top-level parameters for range
<field>
(Required, object) Field you wish to search.
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, Elasticsearch uses the date format
provided in the <field>
‘s mapping. This value overrides that mapping format.
For valid syntax, see format
.
If a format
and date
value are incomplete, Elasticsearch replaces any missing year, month, or day component with the Unix epoch, which is January 1st, 1970.
For example, if the format
value is dd
, Elasticsearch 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
).
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) Coordinated Universal Time (UTC) offset or 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 Time zone in range
queries.
The time_zone
parameter does not affect the date math value of now
. now
is always the current system time in UTC.
However, the time_zone
parameter does convert dates calculated using now
and date math rounding. 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 relevance scores 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.
Notes
Using the range
query with text
and keyword
fields
Range queries on text
or keyword
fields will not be executed if search.allow_expensive_queries
is set to false.
Using the range
query with date
fields
When the <field>
parameter is a date
field data type, you can use date math 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.
GET /_search
{
"query": {
"range": {
"timestamp": {
"gte": "now-1d/d",
"lt": "now/d"
}
}
}
}
Date math and rounding
Elasticsearch rounds 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
, 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.
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:
GET /_search
{
"query": {
"range": {
"timestamp": {
"time_zone": "+01:00",
"gte": "2020-01-01T00:00:00",
"lte": "now"
}
}
}
}
Indicates that | |
With a UTC offset of | |
The |