Support for on-demand/lazy initialization of backend resources
Description
Currently an indexing backend eagerly starts all resources such as thread pools, executors, index writers and readers.
There are cases where those resources are not needed, for example when using a high number of index managers in a dynamic sharding setup: in this scenario, only a few Index Managers could be used to write to index, while all of them are used to query.
Ideally, all IndexManagers should start in "read only" mode, as soon as the first IndexWork arrives it should start all the backend resources.
Currently an indexing backend eagerly starts all resources such as thread pools, executors, index writers and readers.
There are cases where those resources are not needed, for example when using a high number of index managers in a dynamic sharding setup: in this scenario, only a few Index Managers could be used to write to index, while all of them are used to query.
Ideally, all IndexManagers should start in "read only" mode, as soon as the first IndexWork arrives it should start all the backend resources.