diff --git a/app/services/projects/detect_repository_languages_service.rb b/app/services/projects/detect_repository_languages_service.rb
index 9db0b71d106e525efdd98c630b755feb6f3b1b6a..194d0b4c640854dc7f585e06905dba2436383fa6 100644
--- a/app/services/projects/detect_repository_languages_service.rb
+++ b/app/services/projects/detect_repository_languages_service.rb
@@ -66,3 +66,5 @@ def set_detected_repository_languages
     end
   end
 end
+
+Projects::DetectRepositoryLanguagesService.prepend_mod_with('Projects::DetectRepositoryLanguagesService')
diff --git a/ee/app/services/ee/projects/detect_repository_languages_service.rb b/ee/app/services/ee/projects/detect_repository_languages_service.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e31ea3577461d30789c7cacbc360b72656b97d16
--- /dev/null
+++ b/ee/app/services/ee/projects/detect_repository_languages_service.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module EE
+  module Projects
+    module DetectRepositoryLanguagesService
+      def execute
+        repository_languages = super
+        project.maintain_elasticsearch_update if project.maintaining_elasticsearch?
+
+        repository_languages
+      end
+    end
+  end
+end
diff --git a/ee/spec/services/ee/projects/detect_repository_languages_service_spec.rb b/ee/spec/services/ee/projects/detect_repository_languages_service_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e662f896a6321767865fe7a7a9729f2f8b63c8d9
--- /dev/null
+++ b/ee/spec/services/ee/projects/detect_repository_languages_service_spec.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Projects::DetectRepositoryLanguagesService, :clean_gitlab_redis_shared_state, feature_category: :groups_and_projects do
+  let_it_be_with_reload(:project) { create(:project, :repository) }
+
+  describe '#execute' do
+    context 'without previous detection' do
+      before do
+        stub_ee_application_setting(elasticsearch_indexing?: true)
+      end
+
+      it 'calls ProcessBookkeepingService' do
+        expect(::Elastic::ProcessBookkeepingService).to receive(:track!).with(project).once
+        described_class.new(project).execute
+      end
+    end
+  end
+end