diff --git a/.rubocop_todo/search/namespaced_class.yml b/.rubocop_todo/search/namespaced_class.yml
index e80b4de305a766a4dd10eac813e4123876e53f1e..53dae6519596c1c94e86e51d3ff4f2c67573af3a 100644
--- a/.rubocop_todo/search/namespaced_class.yml
+++ b/.rubocop_todo/search/namespaced_class.yml
@@ -81,6 +81,7 @@ Search/NamespacedClass:
     - 'ee/lib/api/elasticsearch_indexed_namespaces.rb'
     - 'ee/lib/ee/api/helpers/search_helpers.rb'
     - 'ee/lib/ee/gitlab/group_search_results.rb'
+    - 'ee/lib/ee/gitlab/search/found_wiki_page.rb'
     - 'ee/lib/ee/gitlab/search/parsed_query.rb'
     - 'ee/lib/ee/gitlab/search_context.rb'
     - 'ee/lib/ee/gitlab/search_results.rb'
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index be0a1318f4b56b58b46f3c0e37a873a104f6d55d..1dd949630c277a67d04b53c20a4941b84ed4b99d 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -657,6 +657,10 @@ def sanitized_search_params
 
     sanitized_params
   end
+
+  def wiki_blob_link(wiki_blob)
+    project_wiki_path(wiki_blob.project, wiki_blob.basename)
+  end
 end
 
 SearchHelper.prepend_mod_with('SearchHelper')
diff --git a/app/views/search/results/_wiki_blob.html.haml b/app/views/search/results/_wiki_blob.html.haml
index d6900c397a0510c4bb6c54ac3696d69832b48f1b..08d8ffcf2509ca4210b57fed84cade99f70d7c0a 100644
--- a/app/views/search/results/_wiki_blob.html.haml
+++ b/app/views/search/results/_wiki_blob.html.haml
@@ -1,9 +1,6 @@
-- project = wiki_blob.project
-- wiki_blob_link = project_wiki_path(project, wiki_blob.basename)
-
 %div{ class: 'search-result-row gl-pb-3! gl-mt-5 gl-mb-0!' }
   %span.gl-display-flex.gl-align-items-center
-    = link_to wiki_blob_link, data: { track_action: 'click_text', track_label: "wiki_title", track_property: 'search_result' }, class: 'gl-w-full' do
+    = link_to wiki_blob_link(wiki_blob), data: { track_action: 'click_text', track_label: "wiki_title", track_property: 'search_result' }, class: 'gl-w-full' do
       %span.term.str-truncated.gl-font-weight-bold= ::Wiki.canonicalize_filename(wiki_blob.path)
   .description.term.col-sm-10.gl-px-0
     = simple_search_highlight_and_truncate(wiki_blob.data, @search_term)
diff --git a/doc/user/project/wiki/group.md b/doc/user/project/wiki/group.md
index 2271c33b5b4371ec3fab65ce3306636fb91b5f0f..41fd7e81db50dab90a40e432015f8cc2524126dd 100644
--- a/doc/user/project/wiki/group.md
+++ b/doc/user/project/wiki/group.md
@@ -14,7 +14,6 @@ to ensure all group members have the correct access permissions to contribute.
 Group wikis are similar to [project wikis](index.md), with a few limitations:
 
 - [Git LFS](../../../topics/git/lfs/index.md) is not supported.
-- Group wikis are not included in [global search](../../search/advanced_search.md).
 - Changes to group wikis don't show up in the [group's activity feed](../../group/manage.md#group-activity-analytics).
 
 For updates, follow [the epic that tracks feature parity with project wikis](https://gitlab.com/groups/gitlab-org/-/epics/2782).
diff --git a/doc/user/search/advanced_search.md b/doc/user/search/advanced_search.md
index 1444e5385f946ef65367142b7c0066678dc6ffd7..5a9f75f1d6cf77fcaf27f059b55e48bb81c4272d 100644
--- a/doc/user/search/advanced_search.md
+++ b/doc/user/search/advanced_search.md
@@ -27,7 +27,7 @@ You can use advanced search in:
 - Code
 - Comments
 - Commits
-- Project wikis (not [group wikis](../project/wiki/group.md))
+- Project and group wikis
 
 ## Enable advanced search
 
diff --git a/doc/user/search/index.md b/doc/user/search/index.md
index 599ac60078f294fb6d0d0f84b425314941744904..46ec0bf62737039c7c59d59650c390699b1493e5 100644
--- a/doc/user/search/index.md
+++ b/doc/user/search/index.md
@@ -27,7 +27,7 @@ can limit the search scope by disabling the following [`ops` feature flags](../.
 | Issues | `global_search_issues_tab` | When enabled, global search includes issues. |
 | Merge requests | `global_search_merge_requests_tab` | When enabled, global search includes merge requests. |
 | Users | `global_search_users_tab` | When enabled, global search includes users. |
-| Wiki | `global_search_wiki_tab` | When enabled, global search includes project wikis (not [group wikis](../project/wiki/group.md)). |
+| Wiki | `global_search_wiki_tab` | When enabled, global search includes project and group wikis. |
 
 All global search scopes are enabled by default on self-managed instances.
 
diff --git a/ee/app/helpers/ee/search_helper.rb b/ee/app/helpers/ee/search_helper.rb
index bf865a198e315403c2d6972efe5091995a06e9e9..13721f6c706cacc60de50905b7257ad858018a8c 100644
--- a/ee/app/helpers/ee/search_helper.rb
+++ b/ee/app/helpers/ee/search_helper.rb
@@ -158,6 +158,13 @@ def search_scope
       end
     end
 
+    override :wiki_blob_link
+    def wiki_blob_link(wiki_blob)
+      return group_wiki_path(wiki_blob.group, wiki_blob.basename) if wiki_blob.group_level_blob
+
+      super
+    end
+
     private
 
     def recent_epics_autocomplete(term)
diff --git a/ee/app/models/ee/group.rb b/ee/app/models/ee/group.rb
index 5ac2e55acab5799004f80a3eab77f84e8a103b0d..7c74a13fdf91a4275c01e8032279d0fbb3cdc453 100644
--- a/ee/app/models/ee/group.rb
+++ b/ee/app/models/ee/group.rb
@@ -832,6 +832,12 @@ def reached_project_access_token_limit?
       actual_limits.exceeded?(:project_access_token_limit, active_project_tokens_of_root_ancestor)
     end
 
+    def pending_delete?
+      return false unless deletion_schedule
+
+      deletion_schedule.marked_for_deletion_on.future?
+    end
+
     private
 
     def active_project_tokens_of_root_ancestor
diff --git a/ee/lib/ee/gitlab/search/found_wiki_page.rb b/ee/lib/ee/gitlab/search/found_wiki_page.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a8b820a7b425a643da933c4d1a531957a9fc9b35
--- /dev/null
+++ b/ee/lib/ee/gitlab/search/found_wiki_page.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module EE
+  module Gitlab
+    module Search
+      module FoundWikiPage
+        extend ::Gitlab::Utils::Override
+        attr_reader :wiki
+
+        # @param found_blob [Gitlab::Search::FoundBlob]
+        override :initialize
+        def initialize(found_blob)
+          @wiki = found_blob.group.wiki if found_blob.group_level_blob
+          super
+        end
+      end
+    end
+  end
+end
diff --git a/ee/lib/elastic/latest/git_class_proxy.rb b/ee/lib/elastic/latest/git_class_proxy.rb
index c4f2407285df7533ff1a95ea382e2aac97ba2a68..2ffd56706bbe49a18756e60ff60b242c32d25d5f 100644
--- a/ee/lib/elastic/latest/git_class_proxy.rb
+++ b/ee/lib/elastic/latest/git_class_proxy.rb
@@ -38,8 +38,8 @@ def elastic_search_as_found_blob(query, page: 1, per: 20, options: {}, preload_m
         options = options.merge(highlight: true)
 
         elastic_search_and_wrap(query, type: es_type, page: page, per: per, options: options,
-          preload_method: preload_method) do |result, project|
-          ::Gitlab::Elastic::SearchResults.parse_search_result(result, project)
+          preload_method: preload_method) do |result, container|
+          ::Gitlab::Elastic::SearchResults.parse_search_result(result, container)
         end
       end
 
@@ -187,23 +187,25 @@ def elastic_search_and_wrap(query, type:, page: 1, per: 20, options: {}, preload
       end
 
       def yield_each_search_result(response, type, preload_method)
-        # Avoid one SELECT per result by loading all projects into a hash
+        group_ids = group_ids_from_wiki_response(type, response)
+        group_containers = Group.with_route.id_in(group_ids).includes(:deletion_schedule) # rubocop: disable CodeReuse/ActiveRecord
         project_ids = response.map { |result| project_id_for_commit_or_blob(result, type) }.uniq
-        projects = Project.with_route.id_in(project_ids)
-        projects = projects.public_send(preload_method) if preload_method # rubocop:disable GitlabSecurity/PublicSend
-        projects = projects.index_by(&:id)
+        # Avoid one SELECT per result by loading all projects into a hash
+        project_containers = Project.with_route.id_in(project_ids)
+        project_containers = project_containers.public_send(preload_method) if preload_method # rubocop:disable GitlabSecurity/PublicSend
+        containers = project_containers + group_containers
+        containers = containers.index_by { |container| "#{container.class.name.downcase}_#{container.id}" }
         total_count = response.total_count
 
         items = response.map do |result|
-          project_id = project_id_for_commit_or_blob(result, type)
-          project = projects[project_id]
+          container = get_container_from_containers_hash(type, result, containers)
 
-          if project.nil? || project.pending_delete?
+          if container.nil? || container.pending_delete?
             total_count -= 1
             next
           end
 
-          yield(result, project)
+          yield(result, container)
         end
 
         # Remove results for deleted projects
@@ -212,11 +214,37 @@ def yield_each_search_result(response, type, preload_method)
         [items, total_count]
       end
 
+      def group_ids_from_wiki_response(type, response)
+        return unless type.eql?('wiki_blob') && use_separate_wiki_index?
+
+        response.map { |result| group_id_for_wiki_blob(result) }
+      end
+
+      def get_container_from_containers_hash(type, result, containers)
+        if group_level_wiki_result?(result)
+          group_id = group_id_for_wiki_blob(result)
+          containers["group_#{group_id}"]
+        else
+          project_id = project_id_for_commit_or_blob(result, type)
+          containers["project_#{project_id}"]
+        end
+      end
+
+      def group_level_wiki_result?(result)
+        return false unless use_separate_wiki_index?
+
+        result['_source']['type'].eql?('wiki_blob') && result['_source']['rid'].match(/wiki_group_\d+/)
+      end
+
       # Indexed commit does not include project_id
       def project_id_for_commit_or_blob(result, type)
         (result.dig('_source', 'project_id') || result.dig('_source', type, 'rid') || result.dig('_source', 'rid')).to_i
       end
 
+      def group_id_for_wiki_blob(result)
+        result.dig('_source', 'group_id')
+      end
+
       def apply_simple_query_string(name:, fields:, query:, bool_expr:, count_only:)
         fields = remove_fields_boost(fields) if count_only
 
diff --git a/ee/lib/elastic/latest/wiki_class_proxy.rb b/ee/lib/elastic/latest/wiki_class_proxy.rb
index 8c05100fb2322e66d7609500338043926c60395d..abe94e41c4c5af0b0394525e61aa11556e82bcc6 100644
--- a/ee/lib/elastic/latest/wiki_class_proxy.rb
+++ b/ee/lib/elastic/latest/wiki_class_proxy.rb
@@ -4,6 +4,7 @@ module Elastic
   module Latest
     class WikiClassProxy < ApplicationClassProxy
       include GitClassProxy
+      include Routing
 
       def es_type
         'wiki_blob'
@@ -14,6 +15,14 @@ def elastic_search_as_wiki_page(*args, **kwargs)
           Gitlab::Search::FoundWikiPage.new(blob)
         end
       end
+
+      # Disable the routing for group level search
+      # Will be enabled from MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125137
+      def routing_options(options)
+        return {} if options[:group_ids].present?
+
+        super
+      end
     end
   end
 end
diff --git a/ee/lib/gitlab/elastic/search_results.rb b/ee/lib/gitlab/elastic/search_results.rb
index dc19d932f480c56219220377c07f810bab9c3eb5..4f60266d599448e796e318b4cbcc0f3b0f82f3ee 100644
--- a/ee/lib/gitlab/elastic/search_results.rb
+++ b/ee/lib/gitlab/elastic/search_results.rb
@@ -177,12 +177,21 @@ def milestones_count
       alias_method :limited_merge_requests_count, :merge_requests_count
       alias_method :limited_milestones_count, :milestones_count
 
-      def self.parse_search_result(result, project)
+      def self.parse_search_result(result, container)
         ref = extract_ref_from_result(result['_source'])
         path = extract_path_from_result(result['_source'])
         basename = File.join(File.dirname(path), File.basename(path, '.*'))
         content = extract_content_from_result(result['_source'])
-        project_id = result['_source']['project_id'].to_i
+        group_id = result['_source']['group_id']&.to_i
+        if group_level_result?(result['_source'])
+          group = container
+          group_level_blob = true
+        else
+          project = container
+          group = container.group
+          project_id = result['_source']['project_id'].to_i
+        end
+
         total_lines = content.lines.size
 
         highlight_content = get_highlight_content(result)
@@ -216,15 +225,20 @@ def self.parse_search_result(result, project)
         highlight_line = highlight_found ? found_line_number + 1 : nil
 
         ::Gitlab::Search::FoundBlob.new(
-          path: path,
-          basename: basename,
-          ref: ref,
-          matched_lines_count: matched_lines_count,
-          startline: from + 1,
-          highlight_line: highlight_line,
-          data: data.join,
-          project: project,
-          project_id: project_id
+          {
+            path: path,
+            basename: basename,
+            ref: ref,
+            matched_lines_count: matched_lines_count,
+            startline: from + 1,
+            highlight_line: highlight_line,
+            data: data.join,
+            project: project,
+            project_id: project_id,
+            group: group,
+            group_id: group_id,
+            group_level_blob: group_level_blob
+          }.compact
         )
       end
 
@@ -424,6 +438,10 @@ def self.extract_content_from_result(source)
         use_separate_wiki_index?(source['type']) ? source['content'] : source['blob']['content']
       end
 
+      def self.group_level_result?(source)
+        source['project_id'].blank?
+      end
+
       def self.get_highlight_content(result)
         content_key = use_separate_wiki_index?(result['_source']['type']) ? 'content' : 'blob.content'
         result.dig('highlight', content_key)&.first || ''
diff --git a/ee/spec/features/search/elastic/global_search_spec.rb b/ee/spec/features/search/elastic/global_search_spec.rb
index 500ae661211df010455c1cf250b869c7c482c76c..9873809a49fdcd87091f454bcf9f1dfe71b17baf 100644
--- a/ee/spec/features/search/elastic/global_search_spec.rb
+++ b/ee/spec/features/search/elastic/global_search_spec.rb
@@ -94,21 +94,27 @@
   end
 
   describe 'I search through the wiki blobs' do
-    before do
-      project.wiki.create_page('test.md', '# term')
-      project.wiki.index_wiki_blobs
+    include WikiHelpers
+    let_it_be(:group_wiki) { create(:group_wiki) }
 
+    before do
+      stub_group_wikis(true)
+      group_wiki.container.add_maintainer(user)
+      [group_wiki, project.wiki].each do |wiki|
+        wiki.create_page('test.md', '# term')
+        wiki.index_wiki_blobs
+      end
       ensure_elasticsearch_index!
     end
 
-    it "finds wiki pages" do
+    it 'finds wiki pages from groups and projects' do
       visit dashboard_projects_path
 
       submit_search('term')
       select_search_scope('Wiki')
 
-      expect(page).to have_selector('.search-result-row .description', text: 'term')
-      expect(page).to have_link('test')
+      expect(page).to have_selector('.search-result-row .description', text: 'term').twice
+      expect(page).to have_link('test').twice
     end
   end
 
@@ -118,7 +124,7 @@
       ensure_elasticsearch_index!
     end
 
-    it "finds commits" do
+    it 'finds commits' do
       visit dashboard_projects_path
 
       submit_search('add')
diff --git a/ee/spec/features/search/elastic/group_search_spec.rb b/ee/spec/features/search/elastic/group_search_spec.rb
index 4ea4be25cdf765ee9ea7cc77b81e319ec0d91a81..1ffdf68975b93524bc08f355bd9803f9dfe957ce 100644
--- a/ee/spec/features/search/elastic/group_search_spec.rb
+++ b/ee/spec/features/search/elastic/group_search_spec.rb
@@ -65,21 +65,25 @@ def choose_group(group)
   end
 
   describe 'wiki search' do
+    include WikiHelpers
     let(:wiki) { ProjectWiki.new(project, user) }
+    let(:group_wiki) { create(:group_wiki, group: group) }
 
     before do
-      wiki.create_page('test.md', '# term')
-      wiki.index_wiki_blobs
-
+      stub_group_wikis(true)
+      [group_wiki, wiki].each do |w|
+        w.create_page('test.md', '# term')
+        w.index_wiki_blobs
+      end
       ensure_elasticsearch_index!
     end
 
-    it 'finds wiki pages' do
+    it 'finds Project and Group wiki pages' do
       submit_search('term')
       select_search_scope('Wiki')
 
-      expect(page).to have_selector('.search-result-row .description', text: 'term')
-      expect(page).to have_link('test')
+      expect(page).to have_selector('.search-result-row .description', text: 'term').twice
+      expect(page).to have_link('test').twice
     end
   end
 
diff --git a/ee/spec/helpers/search_helper_spec.rb b/ee/spec/helpers/search_helper_spec.rb
index 1ab778a53375ddaabf716ed97ee1d5b973c2acae..aec7c4bf66c0f26b9a07f651ae10e5886a02b511 100644
--- a/ee/spec/helpers/search_helper_spec.rb
+++ b/ee/spec/helpers/search_helper_spec.rb
@@ -431,4 +431,13 @@
       expect(search_service.show_elasticsearch_tabs?).to eq(true)
     end
   end
+
+  describe '#wiki_blob_link' do
+    let_it_be(:group) { create(:group, :wiki_repo) }
+    let(:wiki_blob) do
+      Gitlab::Search::FoundBlob.new({ path: 'test', basename: 'test', ref: 'master', data: 'foo', startline: 2, group: group, group_id: group.id, group_level_blob: true })
+    end
+
+    it { expect(wiki_blob_link(wiki_blob)).to eq("/groups/#{group.path}/-/wikis/#{wiki_blob.path}") }
+  end
 end
diff --git a/ee/spec/lib/ee/gitlab/search/found_wiki_page_spec.rb b/ee/spec/lib/ee/gitlab/search/found_wiki_page_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..10b17bafb3c139baa57970c6973d6f7ba1674c5f
--- /dev/null
+++ b/ee/spec/lib/ee/gitlab/search/found_wiki_page_spec.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Search::FoundWikiPage, feature_category: :global_search do
+  describe '.initialize' do
+    subject { found_wiki_page.wiki }
+
+    let(:wiki_blob) { Gitlab::Search::FoundBlob.new(wiki_blob_params) }
+    let(:found_wiki_page) { described_class.new(wiki_blob) }
+    let(:wiki_blob_base_params) do
+      { path: 'test', basename: 'test', ref: 'master', data: "foo", startline: 2 }
+    end
+
+    context 'when found_blob is not a group_level_blob' do
+      let_it_be(:project) { create :project, :wiki_repo }
+      let(:wiki_blob_params) { wiki_blob_base_params.merge(project: project, project_id: project.id) }
+
+      it { is_expected.to be_an_instance_of(ProjectWiki) }
+    end
+
+    context 'when found_blob is a group_level_blob' do
+      let_it_be(:group) { create(:group, :wiki_repo) }
+      let(:wiki_blob_params) { wiki_blob_base_params.merge(group: group, group_id: group.id, group_level_blob: true) }
+
+      it { is_expected.to be_an_instance_of(GroupWiki) }
+    end
+  end
+end
diff --git a/ee/spec/lib/elastic/latest/routing_spec.rb b/ee/spec/lib/elastic/latest/routing_spec.rb
index 14f62f5af4f61e3af649c82c95e0b05287e0fd14..31156fa43d7b4064d3d6227c86c9414deeaa787f 100644
--- a/ee/spec/lib/elastic/latest/routing_spec.rb
+++ b/ee/spec/lib/elastic/latest/routing_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Elastic::Latest::Routing do
+RSpec.describe Elastic::Latest::Routing, feature_category: :global_search do
   let(:proxified_class) { Issue }
   let(:included_class) { Elastic::Latest::ApplicationClassProxy }
   let(:project_ids) { [1, 2, 3] }
diff --git a/ee/spec/lib/gitlab/elastic/search_results_spec.rb b/ee/spec/lib/gitlab/elastic/search_results_spec.rb
index ec1899aa69a5bc5bfb2f4e94d2a39653def27d85..d690085ee51f43959cee72da999ed5e38a7a033e 100644
--- a/ee/spec/lib/gitlab/elastic/search_results_spec.rb
+++ b/ee/spec/lib/gitlab/elastic/search_results_spec.rb
@@ -132,12 +132,12 @@
   end
 
   describe 'parse_search_result' do
-    let(:project) { double(:project) }
+    let_it_be(:project) { create(:project) }
     let(:content) { "foo\nbar\nbaz\n" }
     let(:path) { 'path/file.ext' }
     let(:source) do
       {
-        'project_id' => 1,
+        'project_id' => project.id,
         'blob' => {
           'commit_sha' => 'sha',
           'content' => content,
@@ -276,6 +276,30 @@
         end
       end
     end
+
+    context 'when blob is a group level result' do
+      before do
+        set_elasticsearch_migration_to(:migrate_wikis_to_separate_index, including: true)
+      end
+
+      let_it_be(:group) { create(:group) }
+      let_it_be(:source) do
+        {
+          'type' => 'wiki_blob',
+          'group_id' => group.id,
+          'commit_sha' => 'sha',
+          'content' => 'Test',
+          'path' => 'home.md'
+        }
+      end
+
+      it 'returns an instance of Gitlab::Search::FoundBlob with group_level_blob as true' do
+        parsed = described_class.parse_search_result({ '_source' => source }, group)
+
+        expect(parsed).to be_kind_of(::Gitlab::Search::FoundBlob)
+        expect(parsed).to have_attributes(group: group, project: nil, group_level_blob: true)
+      end
+    end
   end
 
   describe 'issues' do
@@ -1139,6 +1163,31 @@ def search_for(term)
         it { is_expected.to be_empty }
       end
     end
+
+    context 'for group wiki' do
+      let_it_be(:sub_group) { create(:group, :nested) }
+      let_it_be(:sub_group_wiki) { create(:group_wiki, group: sub_group) }
+      let_it_be(:parent_group) { sub_group.parent }
+      let_it_be(:parent_group_wiki) { create(:group_wiki, group: parent_group) }
+      let_it_be(:group_project) { create(:project, :public, :in_group) }
+      let_it_be(:group_project_wiki) { create(:project_wiki, project: group_project, user: user) }
+
+      before do
+        set_elasticsearch_migration_to(:migrate_wikis_to_separate_index, including: true)
+        [parent_group_wiki, sub_group_wiki, group_project_wiki].each do |wiki|
+          wiki.create_page('index_page', 'term')
+          wiki.index_wiki_blobs
+        end
+        ElasticWikiIndexerWorker.new.perform(project_1.id, project_1.class.name, force: true)
+        ensure_elasticsearch_index!
+      end
+
+      it 'includes all the wikis from groups, subgroups, projects and projects within the group' do
+        expect(results.wiki_blobs_count).to eq 4
+        wiki_containers = wiki_blobs.filter_map { |blob| blob.group_level_blob ? blob.group : blob.project }.uniq
+        expect(wiki_containers).to contain_exactly(parent_group, sub_group, group_project, project_1)
+      end
+    end
   end
 
   describe 'commits', :sidekiq_inline do
diff --git a/ee/spec/models/ee/group_spec.rb b/ee/spec/models/ee/group_spec.rb
index 44842d083f4063a1e7bfad64c5fd3a43ce67ba3f..dd1ca64b930e6435edae633d680d7ac12d136a00 100644
--- a/ee/spec/models/ee/group_spec.rb
+++ b/ee/spec/models/ee/group_spec.rb
@@ -2780,4 +2780,34 @@ def webhook_headers
       end
     end
   end
+
+  describe '.pending_delete?' do
+    context 'when deletion_schedule is not present' do
+      it 'returns false' do
+        expect(group).not_to be_pending_delete
+      end
+    end
+
+    context 'when deletion_schedule is present' do
+      context 'when marked_for_deletion_on is from past' do
+        before do
+          create(:group_deletion_schedule, group: group, marked_for_deletion_on: 1.day.ago)
+        end
+
+        it 'returns false' do
+          expect(group).not_to be_pending_delete
+        end
+      end
+
+      context 'when marked_for_deletion_on is in future' do
+        before do
+          create(:group_deletion_schedule, group: group, marked_for_deletion_on: 2.days.from_now)
+        end
+
+        it 'returns true' do
+          expect(group).to be_pending_delete
+        end
+      end
+    end
+  end
 end
diff --git a/lib/gitlab/search/found_blob.rb b/lib/gitlab/search/found_blob.rb
index 79d6cfc84a3e105aab7336460308db7ca905475b..c9051b6a5ff2fc4eb3f48ecfa350716d62111b6d 100644
--- a/lib/gitlab/search/found_blob.rb
+++ b/lib/gitlab/search/found_blob.rb
@@ -9,7 +9,7 @@ class FoundBlob
       include Gitlab::Utils::StrongMemoize
       include BlobActiveModel
 
-      attr_reader :project, :content_match, :blob_path, :highlight_line, :matched_lines_count
+      attr_reader :project, :content_match, :blob_path, :highlight_line, :matched_lines_count, :group_level_blob, :group
 
       PATH_REGEXP = /\A(?<ref>[^:]*):(?<path>[^\x00]*)\x00/.freeze
       CONTENT_REGEXP = /^(?<ref>[^:]*):(?<path>[^\x00]*)\x00(?<startline>\d+)\x00/.freeze
@@ -31,14 +31,17 @@ def initialize(opts = {})
         @binary_data = opts.fetch(:data, nil)
         @per_page = opts.fetch(:per_page, 20)
         @project = opts.fetch(:project, nil)
+        @group = opts.fetch(:group, nil)
         # Some callers (e.g. Elasticsearch) do not have the Project object,
         # yet they can trigger many calls in one go,
         # causing duplicated queries.
         # Allow those to just pass project_id instead.
         @project_id = opts.fetch(:project_id, nil)
+        @group_id = opts.fetch(:group_id, nil)
         @content_match = opts.fetch(:content_match, nil)
         @blob_path = opts.fetch(:blob_path, nil)
         @repository = opts.fetch(:repository, nil)
+        @group_level_blob = opts.fetch(:group_level_blob, false)
       end
 
       def id
diff --git a/lib/gitlab/search/found_wiki_page.rb b/lib/gitlab/search/found_wiki_page.rb
index 99ca6a79fe2dce53ffb3bec692e7c600dec4bba7..650bae2af4d9a87368710cdaf5d91d7ce6c325f3 100644
--- a/lib/gitlab/search/found_wiki_page.rb
+++ b/lib/gitlab/search/found_wiki_page.rb
@@ -14,7 +14,8 @@ def self.declarative_policy_class
       # @param found_blob [Gitlab::Search::FoundBlob]
       def initialize(found_blob)
         super
-        @wiki = found_blob.project.wiki
+
+        @wiki ||= found_blob.project.wiki
       end
 
       def to_ability_name
@@ -23,3 +24,5 @@ def to_ability_name
     end
   end
 end
+
+Gitlab::Search::FoundWikiPage.prepend_mod_with('Gitlab::Search::FoundWikiPage')
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index 6634e7dbf27bb1c3cee676f8ce26a0729a25af87..a71a8392e1c1fe4148b060b85ca5d0d92947e9d4 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -1454,4 +1454,13 @@ def simple_sanitize(str)
 
     it { is_expected.to eq(false) }
   end
+
+  describe '#wiki_blob_link' do
+    let_it_be(:project) { create :project, :wiki_repo }
+    let(:wiki_blob) do
+      Gitlab::Search::FoundBlob.new({ path: 'test', basename: 'test', ref: 'master', data: 'foo', startline: 2, project: project, project_id: project.id })
+    end
+
+    it { expect(wiki_blob_link(wiki_blob)).to eq("/#{project.namespace.path}/#{project.path}/-/wikis/#{wiki_blob.path}") }
+  end
 end
diff --git a/spec/lib/gitlab/search/found_wiki_page_spec.rb b/spec/lib/gitlab/search/found_wiki_page_spec.rb
index fc166ad3851820871f5cba9622a95d570006f05c..b84a27fa2cf1dd9f7646ea84393126ae1daa975f 100644
--- a/spec/lib/gitlab/search/found_wiki_page_spec.rb
+++ b/spec/lib/gitlab/search/found_wiki_page_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Gitlab::Search::FoundWikiPage do
+RSpec.describe Gitlab::Search::FoundWikiPage, feature_category: :global_search do
   let(:project) { create(:project, :public, :repository) }
 
   describe 'policy' do