If you just keep adding in dynamic fields that end up changing the mapping, then no, it's not efficient. Do it enough and you will either bring down your cluster from the mapping explosion, or you will just harmlessly bump into the index.mapping.total_fields.limit.
Index just the fields you need, and stick everything else under some object property with "enabled": false