Allow GitLab admin to control throttling of Elasticsearch indexing
Problem
Related to #216062 and #220424 admins that are enabling Elasticsearch for a large GitLab instance may wish to avoid any risk of overloading Gitaly or Postgres or other resources during the backfill.
The way we control this on GitLab.com is to run dedicated sidekiq workers for Elasticsearch and limit the number of those. But it may also be possible to throttle the workload somehow in GitLab so that puts less burden to set up this complicated deployment structure just for the initial backfill.
Proposal
This could be done by having a cron worker responsible for completing the backfill of all projects. It could run every minute and check the length of queues. If they are empty it could then add more projects to be indexed with a fixed batch size.
There may also be another way to manage it so it keeps everything in Sidekiq queues but GitLab dynamically and automatically controls the sidekiq concurrency for these queues somehow.