diff --git a/ee/app/services/search/rake_task_executor_service.rb b/ee/app/services/search/rake_task_executor_service.rb
index 63b66341f20073f3549252028456335c12ecd813..2a45e10e5a220a3d2fbe22602a3b02a6edbe0efd 100644
--- a/ee/app/services/search/rake_task_executor_service.rb
+++ b/ee/app/services/search/rake_task_executor_service.rb
@@ -314,7 +314,6 @@ def index_users
     def index_namespaces
       Namespace.by_parent(nil).each_batch do |batch|
         batch = batch.include_route
-        batch = batch.select(&:use_elasticsearch?)
 
         ElasticNamespaceIndexerWorker.bulk_perform_async_with_contexts(
           batch,
diff --git a/ee/app/workers/elastic_namespace_indexer_worker.rb b/ee/app/workers/elastic_namespace_indexer_worker.rb
index 11d1a78d9508be519a0eb0a11479a5fc988beda3..e24349c8969840212d945e8621804e5dc6d8a1f0 100644
--- a/ee/app/workers/elastic_namespace_indexer_worker.rb
+++ b/ee/app/workers/elastic_namespace_indexer_worker.rb
@@ -23,7 +23,6 @@ def perform(namespace_id, operation)
     case operation.to_s
     when /index/
       index_projects(namespace)
-      index_group_wikis(namespace) if should_maintain_group_wiki_index?(namespace)
       index_group_associations(namespace)
     when /delete/
       delete_from_index(namespace)
@@ -47,7 +46,14 @@ def index_group_wikis(namespace)
   end
 
   def index_group_associations(namespace)
-    Elastic::ProcessBookkeepingService.maintain_indexed_namespace_associations!(namespace)
+    namespace.self_and_descendants.each_batch do |batch|
+      Elastic::ProcessBookkeepingService.maintain_indexed_namespace_associations!(*batch)
+
+      batch.group_namespaces.each.with_index do |namespace, idx|
+        interval = idx % ElasticWikiIndexerWorker::MAX_JOBS_PER_HOUR
+        ElasticWikiIndexerWorker.perform_in(interval, namespace.id, namespace.class.name, { 'force' => true })
+      end
+    end
   end
 
   def delete_from_index(namespace)
diff --git a/ee/spec/workers/elastic_namespace_indexer_worker_spec.rb b/ee/spec/workers/elastic_namespace_indexer_worker_spec.rb
index 3ff16db80901e71a7a88e69f52c7f0815e147f62..f3b04b879db77fb1676766fc015c74c144edba1a 100644
--- a/ee/spec/workers/elastic_namespace_indexer_worker_spec.rb
+++ b/ee/spec/workers/elastic_namespace_indexer_worker_spec.rb
@@ -27,8 +27,8 @@
     end
 
     describe 'indexing and deleting', :elastic_helpers do
-      let_it_be(:namespace) { create :namespace }
-      let_it_be(:projects) { create_list :project, 3, namespace: namespace }
+      let_it_be(:namespace) { create(:namespace) }
+      let_it_be(:projects) { create_list(:project, 3, namespace: namespace) }
 
       context 'for :index' do
         it_behaves_like 'an idempotent worker' do
@@ -99,7 +99,7 @@
 
             it 'calls Elastic::ProcessBookkeepingService.maintain_indexed_namespace_associations!' do
               expect(Elastic::ProcessBookkeepingService).to receive(:maintain_indexed_namespace_associations!)
-                .with(*parent_group).once
+                .with(parent_group, sub_group, sub_child_group).once
 
               worker.perform(*job_args)
             end