|
@@ -94,61 +94,3 @@ Multiple filters can be applied by wrapping them in a
|
|
|
}
|
|
|
}
|
|
|
--------------------------------------------------
|
|
|
-
|
|
|
-===== Filter strategy
|
|
|
-
|
|
|
-You can control how the filter and query are executed with the `strategy`
|
|
|
-parameter:
|
|
|
-
|
|
|
-[source,js]
|
|
|
---------------------------------------------------
|
|
|
-{
|
|
|
- "filtered" : {
|
|
|
- "query" : { ... },
|
|
|
- "filter" : { ... },
|
|
|
- "strategy": "leap_frog"
|
|
|
- }
|
|
|
-}
|
|
|
---------------------------------------------------
|
|
|
-
|
|
|
-IMPORTANT: This is an _expert-level_ setting. Most users can simply ignore it.
|
|
|
-
|
|
|
-The `strategy` parameter accepts the following options:
|
|
|
-
|
|
|
-[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 the number of documents in the
|
|
|
- index divided by the cardinality of the filter is greater than ${threshold},
|
|
|
- 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.
|