Contains query in elastic search

How do we do a contains string search in elasticsearch in more than 1 field efficiently e.g text "denis tomas" should be searchable by query "tom". I stumbled upon query_string query but usage of wildcards make it inefficient. Also, ngram tokenizer doesn't lead to a true contains search unless using with multi-match with and operator which again increases the number of clauses. Is there any (optimizations over the above two)/other efficient way for contains search?

Have you looked at using a wildcard field together with a wildcard query?

I was going through its documentation. However at the bottom it says the wildcard query is categorized as expensive? Wildcard query | Elasticsearch Guide [8.12] | Elastic.

It is if you run it against a field that is not mapped as wildcard. I can not think of any other way to do what you want in an efficient way.