Returns documents that contain the words of a provided text, in the same order as provided. The last term of the provided text is treated as a prefix, matching any words that begin with that term.
The following search returns documents that contain phrases beginning with
quick brown f in the message field.
This search would match a message value of quick brown fox or two quick
brown ferrets but not the fox is quick and brown.
GET /_search
{
"query": {
"match_phrase_prefix": {
"message": {
"query": "quick brown f"
}
}
}
}
-
query -
(Required, string) Text you wish to find in the provided
<field>.The
match_phrase_prefixquery analyzes any provided text into tokens before performing a search. The last term of this text is treated as a prefix, matching any words that begin with that term. -
analyzer -
(Optional, string) Analyzer used to convert text in the
queryvalue into tokens. Defaults to the index-time analyzer mapped for the<field>. If no analyzer is mapped, the index’s default analyzer is used. -
max_expansions -
(Optional, integer) Maximum number of terms to which the last provided term of
the
queryvalue will expand. Defaults to50. -
slop -
(Optional, integer) Maximum number of positions allowed between matching tokens.
Defaults to
0. Transposed terms have a slop of2. -
zero_terms_query -
(Optional, string) Indicates whether no documents are returned if the
analyzerremoves all tokens, such as when using astopfilter. Valid values are:-
none(Default) -
No documents are returned if the
analyzerremoves all tokens. -
all -
Returns all documents, similar to a
match_allquery.
-
While easy to set up, using the match_phrase_prefix query for search
autocompletion can sometimes produce confusing results.
For example, consider the query string quick brown f. This query works by
creating a phrase query out of quick and brown (i.e. the term quick must
exist and must be followed by the term brown). Then it looks at the sorted
term dictionary to find the first 50 terms that begin with f, and adds these
terms to the phrase query.
The problem is that the first 50 terms may not include the term fox so the
phrase quick brown fox will not be found. This usually isn’t a problem as
the user will continue to type more letters until the word they are looking
for appears.
For better solutions for search-as-you-type see the
completion suggester and
the search_as_you_type field type.