diff --git a/docs/reference/query-dsl/queries/filtered-query.asciidoc b/docs/reference/query-dsl/queries/filtered-query.asciidoc index bf51e9c0710..2e4c42df7c7 100644 --- a/docs/reference/query-dsl/queries/filtered-query.asciidoc +++ b/docs/reference/query-dsl/queries/filtered-query.asciidoc @@ -23,3 +23,32 @@ query maps to Lucene `FilteredQuery`. The filter object can hold only filter elements, not queries. Filters can be much faster compared to queries since they don't perform any scoring, especially when they are cached. + +==== Filter strategy + +The filtered query allows to configure how to intersect the filter with the query: + +[source,js] +-------------------------------------------------- +{ + "filtered" : { + "query" : { + // query definition + }, + "filter" : { + // filter definition + }, + "strategy": "leap_frog" + } +} +-------------------------------------------------- + +[horizontal] +`leap_frog_query_first`:: Look for the first document matching the query, and then alternatively advance the query and the filter to find common matches. +`leap_frog_filter_first`:: Look for the first document matching the filter, and then alternatively advance the query and the filter to find common matches. +`leap_frog`:: Same as `leap_frog_query_first`. +`query_first`:: If the filter supports random access, then search for documents using the query, and then consult the filter to check whether there is a match. Otherwise fall back to `leap_frog_query_first`. +`random_access_${threshold}`:: If the filter supports random access and if there is at least one matching document among the first `threshold` ones, then apply the filter first. Otherwise fall back to `leap_frog_query_first`. `${threshold}` must be greater than or equal to `1`. +`random_access_always`:: Apply the filter first if it supports random access. Otherwise fall back to `leap_frog_query_first`. + +The default strategy is to use `query_first` on filters that are not advanceable such as geo filters and script filters, and `random_access_100` on other filters.