From 95418b5ea732f2a6231ea2247ba91cbd00b0d24e Mon Sep 17 00:00:00 2001
From: Arturo Herrero <arturo.herrero@gmail.com>
Date: Wed, 19 Feb 2025 20:17:54 +0000
Subject: [PATCH] Remove Elasticsearch settings from application settings

Changelog: other
---
 ...asticsearch_analyzers_kuromoji_enabled.yml | 12 ----
 ...lasticsearch_analyzers_kuromoji_search.yml | 12 ----
 ...lasticsearch_analyzers_smartcn_enabled.yml | 12 ----
 ...elasticsearch_analyzers_smartcn_search.yml | 12 ----
 .../elasticsearch_aws.yml                     | 12 ----
 .../elasticsearch_aws_access_key.yml          | 12 ----
 .../elasticsearch_aws_region.yml              | 13 ----
 .../elasticsearch_client_request_timeout.yml  | 12 ----
 ...asticsearch_indexed_field_length_limit.yml | 14 -----
 ...asticsearch_indexed_file_size_limit_kb.yml | 13 ----
 .../elasticsearch_indexing.yml                | 12 ----
 .../elasticsearch_limit_indexing.yml          | 13 ----
 .../elasticsearch_max_bulk_concurrency.yml    | 13 ----
 .../elasticsearch_max_bulk_size_mb.yml        | 13 ----
 ...icsearch_max_code_indexing_concurrency.yml | 13 ----
 .../elasticsearch_pause_indexing.yml          | 12 ----
 .../elasticsearch_requeue_workers.yml         | 14 -----
 .../elasticsearch_retry_on_failure.yml        | 13 ----
 .../elasticsearch_search.yml                  | 12 ----
 .../elasticsearch_username.yml                | 12 ----
 .../elasticsearch_worker_number_of_shards.yml | 13 ----
 ...arch_settings_from_application_settings.rb | 60 +++++++++++++++++++
 db/schema_migrations/20250217121107           |  1 +
 db/structure.sql                              | 22 -------
 .../cells/application_settings_analysis.md    | 31 ++--------
 scripts/migration_schema_validator.rb         |  2 +-
 26 files changed, 67 insertions(+), 313 deletions(-)
 delete mode 100644 config/application_setting_columns/elasticsearch_analyzers_kuromoji_enabled.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_analyzers_kuromoji_search.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_analyzers_smartcn_enabled.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_analyzers_smartcn_search.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_aws.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_aws_access_key.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_aws_region.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_client_request_timeout.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_indexed_field_length_limit.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_indexed_file_size_limit_kb.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_indexing.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_limit_indexing.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_max_bulk_concurrency.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_max_bulk_size_mb.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_max_code_indexing_concurrency.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_pause_indexing.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_requeue_workers.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_retry_on_failure.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_search.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_username.yml
 delete mode 100644 config/application_setting_columns/elasticsearch_worker_number_of_shards.yml
 create mode 100644 db/post_migrate/20250217121107_remove_elasticsearch_settings_from_application_settings.rb
 create mode 100644 db/schema_migrations/20250217121107

diff --git a/config/application_setting_columns/elasticsearch_analyzers_kuromoji_enabled.yml b/config/application_setting_columns/elasticsearch_analyzers_kuromoji_enabled.yml
deleted file mode 100644
index 2ebf9465bb4f..000000000000
--- a/config/application_setting_columns/elasticsearch_analyzers_kuromoji_enabled.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type:
-attr: elasticsearch_analyzers_kuromoji_enabled
-clusterwide: true
-column: elasticsearch_analyzers_kuromoji_enabled
-db_type: boolean
-default: 'false'
-description:
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_analyzers_kuromoji_search.yml b/config/application_setting_columns/elasticsearch_analyzers_kuromoji_search.yml
deleted file mode 100644
index 9eb0162ccf0f..000000000000
--- a/config/application_setting_columns/elasticsearch_analyzers_kuromoji_search.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type:
-attr: elasticsearch_analyzers_kuromoji_search
-clusterwide: true
-column: elasticsearch_analyzers_kuromoji_search
-db_type: boolean
-default: 'false'
-description:
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_analyzers_smartcn_enabled.yml b/config/application_setting_columns/elasticsearch_analyzers_smartcn_enabled.yml
deleted file mode 100644
index abbe0bd6698f..000000000000
--- a/config/application_setting_columns/elasticsearch_analyzers_smartcn_enabled.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type:
-attr: elasticsearch_analyzers_smartcn_enabled
-clusterwide: true
-column: elasticsearch_analyzers_smartcn_enabled
-db_type: boolean
-default: 'false'
-description:
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_analyzers_smartcn_search.yml b/config/application_setting_columns/elasticsearch_analyzers_smartcn_search.yml
deleted file mode 100644
index 2f35b0f712d9..000000000000
--- a/config/application_setting_columns/elasticsearch_analyzers_smartcn_search.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type:
-attr: elasticsearch_analyzers_smartcn_search
-clusterwide: true
-column: elasticsearch_analyzers_smartcn_search
-db_type: boolean
-default: 'false'
-description:
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_aws.yml b/config/application_setting_columns/elasticsearch_aws.yml
deleted file mode 100644
index 0dd697cc4f3d..000000000000
--- a/config/application_setting_columns/elasticsearch_aws.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type: boolean
-attr: elasticsearch_aws
-clusterwide: false
-column: elasticsearch_aws
-db_type: boolean
-default: 'false'
-description: Enable the use of AWS hosted Elasticsearch. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_aws_access_key.yml b/config/application_setting_columns/elasticsearch_aws_access_key.yml
deleted file mode 100644
index 0d688af1aca7..000000000000
--- a/config/application_setting_columns/elasticsearch_aws_access_key.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type: string
-attr: elasticsearch_aws_access_key
-clusterwide: false
-column: elasticsearch_aws_access_key
-db_type: character
-default:
-description: AWS IAM access key. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: false
diff --git a/config/application_setting_columns/elasticsearch_aws_region.yml b/config/application_setting_columns/elasticsearch_aws_region.yml
deleted file mode 100644
index 81f2052ce488..000000000000
--- a/config/application_setting_columns/elasticsearch_aws_region.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: string
-attr: elasticsearch_aws_region
-clusterwide: false
-column: elasticsearch_aws_region
-db_type: character
-default: "'us-east-1'::character"
-description: The AWS region the Elasticsearch domain is configured. Premium and Ultimate
-  only.
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: false
diff --git a/config/application_setting_columns/elasticsearch_client_request_timeout.yml b/config/application_setting_columns/elasticsearch_client_request_timeout.yml
deleted file mode 100644
index 27eea3611ab3..000000000000
--- a/config/application_setting_columns/elasticsearch_client_request_timeout.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type:
-attr: elasticsearch_client_request_timeout
-clusterwide: false
-column: elasticsearch_client_request_timeout
-db_type: integer
-default: '0'
-description:
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_indexed_field_length_limit.yml b/config/application_setting_columns/elasticsearch_indexed_field_length_limit.yml
deleted file mode 100644
index d92a57c30a33..000000000000
--- a/config/application_setting_columns/elasticsearch_indexed_field_length_limit.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_indexed_field_length_limit
-clusterwide: false
-column: elasticsearch_indexed_field_length_limit
-db_type: integer
-default: '0'
-description: Maximum size of text fields to index by Elasticsearch. 0 value means
-  no limit. This does not apply to repository and wiki indexing. Premium and Ultimate
-  only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_indexed_file_size_limit_kb.yml b/config/application_setting_columns/elasticsearch_indexed_file_size_limit_kb.yml
deleted file mode 100644
index 5e251d339cff..000000000000
--- a/config/application_setting_columns/elasticsearch_indexed_file_size_limit_kb.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_indexed_file_size_limit_kb
-clusterwide: false
-column: elasticsearch_indexed_file_size_limit_kb
-db_type: integer
-default: '1024'
-description: Maximum size of repository and wiki files that are indexed by Elasticsearch.
-  Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_indexing.yml b/config/application_setting_columns/elasticsearch_indexing.yml
deleted file mode 100644
index fc711e7cfa6e..000000000000
--- a/config/application_setting_columns/elasticsearch_indexing.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type: boolean
-attr: elasticsearch_indexing
-clusterwide: false
-column: elasticsearch_indexing
-db_type: boolean
-default: 'false'
-description: Enable Elasticsearch indexing. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_limit_indexing.yml b/config/application_setting_columns/elasticsearch_limit_indexing.yml
deleted file mode 100644
index 21b2ab323814..000000000000
--- a/config/application_setting_columns/elasticsearch_limit_indexing.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: boolean
-attr: elasticsearch_limit_indexing
-clusterwide: false
-column: elasticsearch_limit_indexing
-db_type: boolean
-default: 'false'
-description: Limit Elasticsearch to index certain namespaces and projects. Premium
-  and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_max_bulk_concurrency.yml b/config/application_setting_columns/elasticsearch_max_bulk_concurrency.yml
deleted file mode 100644
index 2ac91c8212fb..000000000000
--- a/config/application_setting_columns/elasticsearch_max_bulk_concurrency.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_max_bulk_concurrency
-clusterwide: false
-column: elasticsearch_max_bulk_concurrency
-db_type: smallint
-default: '10'
-description: Maximum concurrency of Elasticsearch bulk requests per indexing operation.
-  This only applies to repository indexing operations. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_max_bulk_size_mb.yml b/config/application_setting_columns/elasticsearch_max_bulk_size_mb.yml
deleted file mode 100644
index 8f34614eb01e..000000000000
--- a/config/application_setting_columns/elasticsearch_max_bulk_size_mb.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_max_bulk_size_mb
-clusterwide: false
-column: elasticsearch_max_bulk_size_mb
-db_type: smallint
-default: '10'
-description: Maximum size of Elasticsearch bulk indexing requests in MB. This only
-  applies to repository indexing operations. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_max_code_indexing_concurrency.yml b/config/application_setting_columns/elasticsearch_max_code_indexing_concurrency.yml
deleted file mode 100644
index 04fb503e6753..000000000000
--- a/config/application_setting_columns/elasticsearch_max_code_indexing_concurrency.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_max_code_indexing_concurrency
-clusterwide: false
-column: elasticsearch_max_code_indexing_concurrency
-db_type: integer
-default: '30'
-description: Maximum concurrency of Elasticsearch code indexing background jobs. This
-  only applies to repository indexing operations. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_pause_indexing.yml b/config/application_setting_columns/elasticsearch_pause_indexing.yml
deleted file mode 100644
index df0e4fe8887f..000000000000
--- a/config/application_setting_columns/elasticsearch_pause_indexing.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type:
-attr: elasticsearch_pause_indexing
-clusterwide: false
-column: elasticsearch_pause_indexing
-db_type: boolean
-default: 'false'
-description:
-encrypted: false
-gitlab_com_different_than_default: false
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_requeue_workers.yml b/config/application_setting_columns/elasticsearch_requeue_workers.yml
deleted file mode 100644
index ea126b109a5a..000000000000
--- a/config/application_setting_columns/elasticsearch_requeue_workers.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-api_type: boolean
-attr: elasticsearch_requeue_workers
-clusterwide: false
-column: elasticsearch_requeue_workers
-db_type: boolean
-default: 'false'
-description: Enable automatic requeuing of indexing workers. This improves non-code
-  indexing throughput by enqueuing Sidekiq jobs until all documents are processed.
-  Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_retry_on_failure.yml b/config/application_setting_columns/elasticsearch_retry_on_failure.yml
deleted file mode 100644
index 96a2a0072efe..000000000000
--- a/config/application_setting_columns/elasticsearch_retry_on_failure.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_retry_on_failure
-clusterwide: false
-column: elasticsearch_retry_on_failure
-db_type: integer
-default: '0'
-description: Maximum number of possible retries for Elasticsearch search requests.
-  Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_search.yml b/config/application_setting_columns/elasticsearch_search.yml
deleted file mode 100644
index 9db5c1504e2c..000000000000
--- a/config/application_setting_columns/elasticsearch_search.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type: boolean
-attr: elasticsearch_search
-clusterwide: false
-column: elasticsearch_search
-db_type: boolean
-default: 'false'
-description: Enable Elasticsearch search. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/config/application_setting_columns/elasticsearch_username.yml b/config/application_setting_columns/elasticsearch_username.yml
deleted file mode 100644
index d1f089a93f61..000000000000
--- a/config/application_setting_columns/elasticsearch_username.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-api_type: string
-attr: elasticsearch_username
-clusterwide: false
-column: elasticsearch_username
-db_type: text
-default:
-description: The `username` of your Elasticsearch instance. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: false
diff --git a/config/application_setting_columns/elasticsearch_worker_number_of_shards.yml b/config/application_setting_columns/elasticsearch_worker_number_of_shards.yml
deleted file mode 100644
index c86e25070236..000000000000
--- a/config/application_setting_columns/elasticsearch_worker_number_of_shards.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-api_type: integer
-attr: elasticsearch_worker_number_of_shards
-clusterwide: false
-column: elasticsearch_worker_number_of_shards
-db_type: integer
-default: '2'
-description: Number of indexing worker shards. This improves non-code indexing throughput
-  by enqueuing more parallel Sidekiq jobs. Default is `2`. Premium and Ultimate only.
-encrypted: false
-gitlab_com_different_than_default: true
-jihu: false
-not_null: true
diff --git a/db/post_migrate/20250217121107_remove_elasticsearch_settings_from_application_settings.rb b/db/post_migrate/20250217121107_remove_elasticsearch_settings_from_application_settings.rb
new file mode 100644
index 000000000000..7074e541083e
--- /dev/null
+++ b/db/post_migrate/20250217121107_remove_elasticsearch_settings_from_application_settings.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+class RemoveElasticsearchSettingsFromApplicationSettings < Gitlab::Database::Migration[2.2]
+  disable_ddl_transaction!
+  milestone '17.10'
+
+  def up
+    with_lock_retries do
+      remove_column :application_settings, :elasticsearch_aws
+      remove_column :application_settings, :elasticsearch_search
+      remove_column :application_settings, :elasticsearch_indexing
+      remove_column :application_settings, :elasticsearch_username
+      remove_column :application_settings, :elasticsearch_aws_region
+      remove_column :application_settings, :elasticsearch_aws_access_key
+      remove_column :application_settings, :elasticsearch_limit_indexing
+      remove_column :application_settings, :elasticsearch_pause_indexing
+      remove_column :application_settings, :elasticsearch_requeue_workers
+      remove_column :application_settings, :elasticsearch_max_bulk_size_mb
+      remove_column :application_settings, :elasticsearch_retry_on_failure
+      remove_column :application_settings, :elasticsearch_max_bulk_concurrency
+      remove_column :application_settings, :elasticsearch_client_request_timeout
+      remove_column :application_settings, :elasticsearch_worker_number_of_shards
+      remove_column :application_settings, :elasticsearch_analyzers_smartcn_search
+      remove_column :application_settings, :elasticsearch_analyzers_kuromoji_search
+      remove_column :application_settings, :elasticsearch_analyzers_smartcn_enabled
+      remove_column :application_settings, :elasticsearch_analyzers_kuromoji_enabled
+      remove_column :application_settings, :elasticsearch_indexed_field_length_limit
+      remove_column :application_settings, :elasticsearch_indexed_file_size_limit_kb
+      remove_column :application_settings, :elasticsearch_max_code_indexing_concurrency
+    end
+  end
+
+  def down
+    with_lock_retries do
+      add_column :application_settings, :elasticsearch_aws, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_search, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_indexing, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_username, :text
+      add_column :application_settings, :elasticsearch_aws_region, 'character varying', default: 'us-east-1'
+      add_column :application_settings, :elasticsearch_aws_access_key, 'character varying'
+      add_column :application_settings, :elasticsearch_limit_indexing, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_pause_indexing, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_requeue_workers, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_max_bulk_size_mb, :smallint, default: 10, null: false
+      add_column :application_settings, :elasticsearch_retry_on_failure, :integer, default: 0, null: false
+      add_column :application_settings, :elasticsearch_max_bulk_concurrency, :smallint, default: 10, null: false
+      add_column :application_settings, :elasticsearch_client_request_timeout, :integer, default: 0, null: false
+      add_column :application_settings, :elasticsearch_worker_number_of_shards, :integer, default: 2, null: false
+      add_column :application_settings, :elasticsearch_analyzers_smartcn_search, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_analyzers_kuromoji_search, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_analyzers_smartcn_enabled, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_analyzers_kuromoji_enabled, :boolean, default: false, null: false
+      add_column :application_settings, :elasticsearch_indexed_field_length_limit, :integer, default: 0, null: false
+      add_column :application_settings, :elasticsearch_indexed_file_size_limit_kb, :integer, default: 1024, null: false
+      add_column :application_settings, :elasticsearch_max_code_indexing_concurrency, :integer, default: 30, null: false
+    end
+
+    add_check_constraint(:application_settings, 'char_length(elasticsearch_username) <= 255', 'check_e5024c8801')
+  end
+end
diff --git a/db/schema_migrations/20250217121107 b/db/schema_migrations/20250217121107
new file mode 100644
index 000000000000..3b1ebf530937
--- /dev/null
+++ b/db/schema_migrations/20250217121107
@@ -0,0 +1 @@
+a87dfeeb1bffdf43d12fc05989d84e4dc5751351aeab5620a286a4c644ffa848
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 02c41dd0a72b..85df8304ebf4 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -8322,27 +8322,6 @@ CREATE TABLE application_settings (
     encrypted_ci_job_token_signing_key_iv bytea,
     elasticsearch jsonb DEFAULT '{}'::jsonb NOT NULL,
     oauth_provider jsonb DEFAULT '{}'::jsonb NOT NULL,
-    elasticsearch_aws boolean DEFAULT false NOT NULL,
-    elasticsearch_search boolean DEFAULT false NOT NULL,
-    elasticsearch_indexing boolean DEFAULT false NOT NULL,
-    elasticsearch_username text,
-    elasticsearch_aws_region character varying DEFAULT 'us-east-1'::character varying,
-    elasticsearch_aws_access_key character varying,
-    elasticsearch_limit_indexing boolean DEFAULT false NOT NULL,
-    elasticsearch_pause_indexing boolean DEFAULT false NOT NULL,
-    elasticsearch_requeue_workers boolean DEFAULT false NOT NULL,
-    elasticsearch_max_bulk_size_mb smallint DEFAULT 10 NOT NULL,
-    elasticsearch_retry_on_failure integer DEFAULT 0 NOT NULL,
-    elasticsearch_max_bulk_concurrency smallint DEFAULT 10 NOT NULL,
-    elasticsearch_client_request_timeout integer DEFAULT 0 NOT NULL,
-    elasticsearch_worker_number_of_shards integer DEFAULT 2 NOT NULL,
-    elasticsearch_analyzers_smartcn_search boolean DEFAULT false NOT NULL,
-    elasticsearch_analyzers_kuromoji_search boolean DEFAULT false NOT NULL,
-    elasticsearch_analyzers_smartcn_enabled boolean DEFAULT false NOT NULL,
-    elasticsearch_analyzers_kuromoji_enabled boolean DEFAULT false NOT NULL,
-    elasticsearch_indexed_field_length_limit integer DEFAULT 0 NOT NULL,
-    elasticsearch_indexed_file_size_limit_kb integer DEFAULT 1024 NOT NULL,
-    elasticsearch_max_code_indexing_concurrency integer DEFAULT 30 NOT NULL,
     observability_settings jsonb DEFAULT '{}'::jsonb NOT NULL,
     search jsonb DEFAULT '{}'::jsonb NOT NULL,
     anti_abuse_settings jsonb DEFAULT '{}'::jsonb NOT NULL,
@@ -8423,7 +8402,6 @@ CREATE TABLE application_settings (
     CONSTRAINT check_d820146492 CHECK ((char_length(spam_check_endpoint_url) <= 255)),
     CONSTRAINT check_e2692d7523 CHECK ((char_length(default_preferred_language) <= 32)),
     CONSTRAINT check_e2dd6e290a CHECK ((char_length(jira_connect_application_key) <= 255)),
-    CONSTRAINT check_e5024c8801 CHECK ((char_length(elasticsearch_username) <= 255)),
     CONSTRAINT check_e5aba18f02 CHECK ((char_length(container_registry_version) <= 255)),
     CONSTRAINT check_ef6176834f CHECK ((char_length(encrypted_cloud_license_auth_token_iv) <= 255)),
     CONSTRAINT check_identity_verification_settings_is_hash CHECK ((jsonb_typeof(identity_verification_settings) = 'object'::text))
diff --git a/doc/development/cells/application_settings_analysis.md b/doc/development/cells/application_settings_analysis.md
index 3fee913e8690..e1dddf5da80e 100644
--- a/doc/development/cells/application_settings_analysis.md
+++ b/doc/development/cells/application_settings_analysis.md
@@ -14,12 +14,12 @@ title: Application Settings analysis
 
 ## Statistics
 
-- Number of attributes: 513
+- Number of attributes: 492
 - Number of encrypted attributes: 41 (8.0%)
-- Number of attributes documented: 313 (61.0%)
-- Number of attributes on GitLab.com different from the defaults: 233 (45.0%)
-- Number of attributes with `clusterwide` set: 513 (100.0%)
-- Number of attributes with `clusterwide: true` set: 127 (25.0%)
+- Number of attributes documented: 298 (61.0%)
+- Number of attributes on GitLab.com different from the defaults: 222 (45.0%)
+- Number of attributes with `clusterwide` set: 492 (100.0%)
+- Number of attributes with `clusterwide: true` set: 123 (25.0%)
 
 ## Individual columns
 
@@ -156,30 +156,9 @@ title: Application Settings analysis
 | `eks_integration_enabled` | `false` | `boolean` | `boolean` | `true` | `false` | `true` | `true`| `true` |
 | `eks_secret_access_key` | `true` | `text` | `string` | `false` | `null` | `true` | `true`| `true` |
 | `elasticsearch` | `false` | `jsonb` | `` | `true` | `'{}'::jsonb` | `true` | `false`| `false` |
-| `elasticsearch_analyzers_kuromoji_enabled` | `false` | `boolean` | `` | `true` | `false` | `false` | `true`| `false` |
-| `elasticsearch_analyzers_kuromoji_search` | `false` | `boolean` | `` | `true` | `false` | `false` | `true`| `false` |
-| `elasticsearch_analyzers_smartcn_enabled` | `false` | `boolean` | `` | `true` | `false` | `false` | `true`| `false` |
-| `elasticsearch_analyzers_smartcn_search` | `false` | `boolean` | `` | `true` | `false` | `false` | `true`| `false` |
-| `elasticsearch_aws` | `false` | `boolean` | `boolean` | `true` | `false` | `false` | `false`| `true` |
-| `elasticsearch_aws_access_key` | `false` | `character` | `string` | `false` | `null` | `true` | `false`| `true` |
-| `elasticsearch_aws_region` | `false` | `character` | `string` | `false` | `'us-east-1'::character` | `false` | `false`| `true` |
 | `elasticsearch_aws_secret_access_key` | `true` | `text` | `string` | `false` | `null` | `true` | `false`| `true` |
-| `elasticsearch_client_request_timeout` | `false` | `integer` | `` | `true` | `0` | `true` | `false`| `false` |
-| `elasticsearch_indexed_field_length_limit` | `false` | `integer` | `integer` | `true` | `0` | `true` | `false`| `true` |
-| `elasticsearch_indexed_file_size_limit_kb` | `false` | `integer` | `integer` | `true` | `1024` | `false` | `false`| `true` |
-| `elasticsearch_indexing` | `false` | `boolean` | `boolean` | `true` | `false` | `true` | `false`| `true` |
-| `elasticsearch_limit_indexing` | `false` | `boolean` | `boolean` | `true` | `false` | `true` | `false`| `true` |
-| `elasticsearch_max_bulk_concurrency` | `false` | `smallint` | `integer` | `true` | `10` | `false` | `false`| `true` |
-| `elasticsearch_max_bulk_size_mb` | `false` | `smallint` | `integer` | `true` | `10` | `false` | `false`| `true` |
-| `elasticsearch_max_code_indexing_concurrency` | `false` | `integer` | `integer` | `true` | `30` | `true` | `false`| `true` |
 | `elasticsearch_password` | `true` | `bytea` | `string` | `false` | `null` | `true` | `false`| `true` |
-| `elasticsearch_pause_indexing` | `false` | `boolean` | `` | `true` | `false` | `false` | `false`| `false` |
-| `elasticsearch_requeue_workers` | `false` | `boolean` | `boolean` | `true` | `false` | `true` | `false`| `true` |
-| `elasticsearch_retry_on_failure` | `false` | `integer` | `integer` | `true` | `0` | `true` | `false`| `true` |
-| `elasticsearch_search` | `false` | `boolean` | `boolean` | `true` | `false` | `true` | `false`| `true` |
 | `elasticsearch_url` | `false` | `character` | `string` | `false` | `'http://localhost:9200'::character` | `true` | `false`| `true` |
-| `elasticsearch_username` | `false` | `text` | `string` | `false` | `null` | `true` | `false`| `true` |
-| `elasticsearch_worker_number_of_shards` | `false` | `integer` | `integer` | `true` | `2` | `true` | `false`| `true` |
 | `email_additional_text` | `false` | `character` | `string` | `false` | `null` | `true` | `true`| `true` |
 | `email_author_in_body` | `false` | `boolean` | `boolean` | `false` | `false` | `false` | `true`| `true` |
 | `email_confirmation_setting` | `false` | `smallint` | `string` | `false` | `0` | `true` | `true`| `true` |
diff --git a/scripts/migration_schema_validator.rb b/scripts/migration_schema_validator.rb
index ca7c53c75fe2..ad607a59ac5b 100644
--- a/scripts/migration_schema_validator.rb
+++ b/scripts/migration_schema_validator.rb
@@ -106,7 +106,7 @@ def check_file(file_path)
       next unless File.exist?(model_file_path)
 
       model_content = File.read(model_file_path)
-      next if model_content.match?(/\s(ignore_column|ignore_columns)\s(:|%i\[)\s*#{column}/)
+      next if model_content.match?(/\s(ignore_column|ignore_columns)\s(:|%i\[).*?#{column}\b/m)
 
       @models_missing_ignore[model_name.to_s] << column
     end
-- 
GitLab