WARNING: Version 1.7 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Range Query
editRange Query
editMatches documents with fields that have terms within a certain range.
The type of the Lucene query depends on the field type, for string
fields, the TermRangeQuery
, while for number/date fields, the query is
a NumericRangeQuery
. The following example returns all documents where
age
is between 10
and 20
:
{ "range" : { "age" : { "gte" : 10, "lte" : 20, "boost" : 2.0 } } }
The range
query accepts the following parameters:
|
Greater-than or equal to |
|
Greater-than |
|
Less-than or equal to |
|
Less-than |
|
Sets the boost value of the query, defaults to |
Date options
editWhen applied on date
fields the range
filter accepts also a time_zone
parameter.
The time_zone
parameter will be applied to your input lower and upper bounds and will
move them to UTC time based date:
{ "range" : { "born" : { "gte": "2012-01-01", "lte": "now", "time_zone": "+1:00" } } }
In the above example, gte
will be actually moved to 2011-12-31T23:00:00
UTC date.
if you give a date with a timezone explicitly defined and use the time_zone
parameter, time_zone
will be
ignored. For example, setting gte
to 2012-01-01T00:00:00+01:00
with "time_zone":"+10:00"
will still use +01:00
time zone.
When applied on date
fields the range
query accepts also a format
parameter.
The format
parameter will help support another date format than the one defined in mapping:
{ "range" : { "born" : { "gte": "01/01/2012", "lte": "2013", "format": "dd/MM/yyyy||yyyy" } } }