The instinct when faced with a search requirement is often to reach for Elasticsearch. It is powerful, flexible, and well-documented. It is also a distributed system requiring its own cluster, operational expertise, and index management discipline.
MySQL full-text search (FULLTEXT indexes with MATCH...AGAINST queries) handles a significant subset of search requirements with no additional infrastructure.
MySQL full-text search works well for: single-table or joined searches on known columns, relevance ranking for simple keyword queries, and applications where the search corpus changes frequently (full-text indexes update on write, unlike Elasticsearch which requires explicit index refresh).
Elasticsearch is worth its complexity when: you need faceted search across many attributes, language-specific stemming and tokenisation, fuzzy matching, or search across very large corpora with complex relevance tuning.
SellTrove uses MySQL full-text search for product catalogue search within a seller's store (bounded corpus, simple queries). Elasticsearch would be justified for cross-seller search at scale — a feature we have not yet needed.
— Dick Bassey | DevDick | 2023