Exact phrase matching in any word order, but restricts words not in query

I would like to query for 'apple pie' and return the result 'apple pie' as well as 'pie apple', but I want to restrict any results such as 'apple pie crumb cake' or 'brown apple pie'. Is there some kind of: 'result must match query exactly' or some way to use the score as an indicator for a perfect/exact match?

Default operator 'and' is perfect, but it also retrieves results that do not exactly match.

'not_analyze' or tokenizing the fields as 'keyword' doesn't allow me to query for the item in reverse, ie: 'apple pie' works, but 'pie apple' does not.