Match boolean prefix query
Match boolean prefix query
A match_bool_prefix
query analyzes its input and constructs a bool query 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
GET /_search
{
"query": {
"match_bool_prefix" : {
"message" : "quick brown f"
}
}
}
where analysis produces the terms quick
, brown
, and f
is similar to the following bool
query
GET /_search
{
"query": {
"bool" : {
"should": [
{ "term": { "message": "quick" }},
{ "term": { "message": "brown" }},
{ "prefix": { "message": "f"}}
]
}
}
}
An important difference between the match_bool_prefix
query and match_phrase_prefix 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 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
GET /_search
{
"query": {
"match_bool_prefix": {
"message": {
"query": "quick brown f",
"analyzer": "keyword"
}
}
}
}
match_bool_prefix
queries support the minimum_should_match and operator
parameters as described for the match query, 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 fuzziness, 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.