[[query-dsl-range-filter]] === Range Filter Filters documents with fields that have terms within a certain range. Similar to <>, except that it acts as a filter. Can be placed within queries that accept a filter. [source,js] -------------------------------------------------- { "constant_score" : { "filter" : { "range" : { "age" : { "gte": 10, "lte": 20 } } } } } -------------------------------------------------- The `range` filter accepts the following parameters: [horizontal] `gte`:: Greater-than or equal to `gt`:: Greater-than `lte`:: Less-than or equal to `lt`:: Less-than [float] ==== Execution The `execution` option controls how the range filter internally executes. The `execution` option accepts the following values: [horizontal] `index`:: Uses field's inverted in order to determine of documents fall with in the range filter's from and to range `fielddata`:: 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 same suggests uses field data and therefor requires more memory, so make 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. [float] ==== Caching The 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.