[[query-dsl-match-bool-prefix-query]] === Match boolean prefix query ++++ Match boolean prefix ++++ A `match_bool_prefix` query analyzes its input and constructs a <> from the terms. Each term except the last is used in a `term` query. The last term is used in a `prefix` query. A `match_bool_prefix` query such as [source,js] -------------------------------------------------- GET /_search { "query": { "match_bool_prefix" : { "message" : "quick brown f" } } } -------------------------------------------------- // CONSOLE where analysis produces the terms `quick`, `brown`, and `f` is similar to the following `bool` query [source,js] -------------------------------------------------- GET /_search { "query": { "bool" : { "should": [ { "term": { "message": "quick" }}, { "term": { "message": "brown" }}, { "prefix": { "message": "f"}} ] } } } -------------------------------------------------- // CONSOLE An important difference between the `match_bool_prefix` query and <> is that the `match_phrase_prefix` query matches its terms as a phrase, but the `match_bool_prefix` query can match its terms in any position. The example `match_bool_prefix` query above could match a field containing containing `quick brown fox`, but it could also match `brown fox quick`. It could also match a field containing the term `quick`, the term `brown` and a term starting with `f`, appearing in any position. ==== Parameters By default, `match_bool_prefix` queries' input text will be analyzed using the analyzer from the queried field's mapping. A different search analyzer can be configured with the `analyzer` parameter [source,js] -------------------------------------------------- GET /_search { "query": { "match_bool_prefix" : { "message": { "query": "quick brown f", "analyzer": "keyword" } } } } -------------------------------------------------- // CONSOLE `match_bool_prefix` queries support the <> and `operator` parameters as described for the <>, applying the setting to the constructed `bool` query. The number of clauses in the constructed `bool` query will in most cases be the number of terms produced by analysis of the query text. The <>, `prefix_length`, `max_expansions`, `fuzzy_transpositions`, and `fuzzy_rewrite` parameters can be applied to the `term` subqueries constructed for all terms but the final term. They do not have any effect on the prefix query constructed for the final term.