The short answer is "no", you can't do that with the _all field. The _all field is really that: a single field that contains the concatenated contents of all other fields. Once the data from other fields is concatenated into _all, all information about where it came (or even what kind of data it is, e.g. date vs. number vs. string) is completely lost. It's just a single, big bag of text.
If you need to know what field a query matches, you'll need to maintain multiple fields and search across them. You can do that relatively easily with the multi_match query, which is designed to search many fields at once.
Then you can use highlighting or query naming in various combinations to achieve what you want.
This probably isn't required, you just need to keep the fields distinct and search them as independent fields, rather than using the _all field.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.