Search performance multiple fields vs custom all field

We have the requirement to enable the default search on a set of data fields?
Which is better approach?

"multi_match": {
"query": "Quick brown fox",
"fields": [ "f1", "f2","f3","f4","f5"... ]

OR create a custom search field using copy_to operator and do full text search on that field.

Considering all these fields have specific search requirement and required to be analyzed using edgengram analyzer.

I'd performance test it locally. The multi_match solution gives you more flexibility to decide the fields at runtime and takes up less space on disk, though I've deployed the copy_to + edgengram analyzer solution and seen very, very good performance out of it. You might also want to look at the completion suggestion which is designed to work like the edgengram analyzer solution but has even tighter performance requirements at the cost of using a good bit of managed memory.