Actually the one with the information about the schema is the provider, and is shared with every visualization that uses it. This means that the schema is queried only once, so if you have 10 visualizations that perform different queries, but they all use the same source, the schema will be queried only the first time.
With this been said, if you just need the schema and nothing else, you can use your approach of creating a simple query with a count or something, or use the provider directly:
const provider = cf.getProviderByConfig({ name: 'Elastic' })
provider
.request('source', 'ticket_sales')
.then(source => console.log('Source schema is', source))