At first glance, the syntax is not quite right. There should be only one must under compound, which is an array of text clauses, rather than a bunch of musts.
Also, there are two diagnostic tools worth exploring here: scoreDetails to see how the scores are computed and the .explain() on the aggregation call which shows how the query was interpreted. The .explain() is going to be helpful in your case. The must clauses are likely overly restrictive, as at least one of each of those query terms is going to have to match the specified field in order for a document to match. Perhaps make this a should array rather than must and let relevancy pull the best matching documents to the top.