According to here, match phrase prefix does a prefix query on the last term in the query. With not_analyzed, the whole string is taken as a term. Therefore the "last term" is [Albert Einstein]. Albert is a prefix of this term, therefore it matches.
Most other search queries are exact term matches. A query term needs to match a document's term exactly after analysis is run to match.
Thank you for this informative answer and blog post.
Therefore the "last term" is [Albert Einstein]. Albert is a prefix of this term, therefore it matches.
I understand that: The string [Albert Einstein] transformed into two sub-string ["Albert", "Einstein"] by the match_phrase_prefix query in search time.
The search string is not_analyzed as well. The search engine takes the whole token [Albert Einstein] and treats it as a word. There's no extra "substring" involved. [Albert] is a prefix of the larger term [Albert Einstein].
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.