When you define fields, they are usually strings, but it is also possible to use an Array (or anything else that can be meaningfully turned into a string).
So you could have a field called tags that is just an array, this will then be indexed correctly and searchable.
I don't know what metadata you have, but you could have multiple fields like this, perhaps a field for
type, you can then boost them in a way that makes sense for your data.
You may want to customise the processing pipeline, again it depends on your data, but stop word filtering or stemming might not be required if your data is not full text, you would have to experiment.