The main failure mode here I find is nuances in more specialized datasets. Elasticsearch is great, powerful and easy to work with once you get the hang of it, but is very open-ended with lots of room to build a sub-optimal solution.
Fuzzy matching and boosting often trip people up or lead to folks shooting themselves in the foot relevancy-wise.
If you want really great results, you need to spend the time crafting your query, dealing with synonyms ("pop" vs. "soda"), stemming, typos, negative boosts ("non-alcoholic", in the example) etc.
It's not necessarily hard, just often forgotten or not included in the initial scope.
Fuzzy matching and boosting often trip people up or lead to folks shooting themselves in the foot relevancy-wise.
If you want really great results, you need to spend the time crafting your query, dealing with synonyms ("pop" vs. "soda"), stemming, typos, negative boosts ("non-alcoholic", in the example) etc.
It's not necessarily hard, just often forgotten or not included in the initial scope.