WARNING: Version 0.90 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 Filter
editRange Filter
editFilters documents with fields that have terms within a certain range. Similar to range query, except that it acts as a filter. Can be placed within queries that accept a filter.
{ "constant_score" : { "filter" : { "range" : { "age" : { "gte": 10, "lte": 20 } } } } }
The range
filter accepts the following parameters:
|
Greater-than or equal to |
|
Greater-than |
|
Less-than or equal to |
|
Less-than |
Deprecated in 0.90.4.
The from
, to
, include_lower
and include_upper
parameters have been deprecated in favour of gt
,gte
,lt
,lte
Execution
editAdded in 0.90.8.
The execution
option controls how the range filter internally executes. The execution
option accepts the following values:
|
Uses field’s inverted index order to determine of documents fall with in the range filter’s from and to range |
|
Uses field data in order to determine of documents fall with in the range filter’s from and to range. |
In general for small ranges the index
execution is faster and for longer ranges the fielddata
execution is faster.
The fielddata
execution as the name suggests uses field data and therefore requires more memory, so make sure you have
sufficient memory on your nodes in order to use this execution mode. It usually makes sense to use it on fields you’re
already faceting or sorting by.
Caching
editThe result of the filter is only automatically cached by default if the execution
is set to index
. The
_cache
can be set to false
to turn it off.
If the now
date math expression is used without rounding then a range filter will never be cached even if _cache
is
set to true
. Also any filter that wraps this filter will never be cached.