diff --git a/e2e-tests/playwright/support/server/default_config.ts b/e2e-tests/playwright/support/server/default_config.ts
index 73542029d8..1caad2e2d2 100644
--- a/e2e-tests/playwright/support/server/default_config.ts
+++ b/e2e-tests/playwright/support/server/default_config.ts
@@ -566,6 +566,7 @@ const defaultServerConfig: AdminConfig = {
ClientCert: '',
ClientKey: '',
Trace: '',
+ IgnoredPurgeIndexes: '',
},
BleveSettings: {
IndexDir: '',
diff --git a/server/i18n/en.json b/server/i18n/en.json
index 409430c3cb..7b4b555d02 100644
--- a/server/i18n/en.json
+++ b/server/i18n/en.json
@@ -8687,6 +8687,10 @@
"id": "model.config.is_valid.elastic_search.enable_searching.app_error",
"translation": "Elasticsearch EnableIndexing setting must be set to true when Elasticsearch EnableSearching is set to true"
},
+ {
+ "id": "model.config.is_valid.elastic_search.ignored_indexes_dash_prefix.app_error",
+ "translation": "Ignored indexes for purge should not start with dash."
+ },
{
"id": "model.config.is_valid.elastic_search.live_indexing_batch_size.app_error",
"translation": "Elasticsearch Live Indexing Batch Size must be at least 1."
diff --git a/server/public/model/config.go b/server/public/model/config.go
index 8ad1d72d0a..095f2f4548 100644
--- a/server/public/model/config.go
+++ b/server/public/model/config.go
@@ -2628,6 +2628,7 @@ type ElasticsearchSettings struct {
ClientCert *string `access:"environment_elasticsearch,write_restrictable,cloud_restrictable"`
ClientKey *string `access:"environment_elasticsearch,write_restrictable,cloud_restrictable"`
Trace *string `access:"environment_elasticsearch,write_restrictable,cloud_restrictable"`
+ IgnoredPurgeIndexes *string `access:"environment_elasticsearch,write_restrictable,cloud_restrictable"` // telemetry: none
}
func (s *ElasticsearchSettings) SetDefaults() {
@@ -2726,6 +2727,10 @@ func (s *ElasticsearchSettings) SetDefaults() {
if s.Trace == nil {
s.Trace = NewString("")
}
+
+ if s.IgnoredPurgeIndexes == nil {
+ s.IgnoredPurgeIndexes = NewString("")
+ }
}
type BleveSettings struct {
@@ -3874,6 +3879,15 @@ func (s *ElasticsearchSettings) isValid() *AppError {
return NewAppError("Config.IsValid", "model.config.is_valid.elastic_search.request_timeout_seconds.app_error", nil, "", http.StatusBadRequest)
}
+ if ign := *s.IgnoredPurgeIndexes; ign != "" {
+ s := strings.Split(ign, ",")
+ for _, ix := range s {
+ if strings.HasPrefix(ix, "-") {
+ return NewAppError("Config.IsValid", "model.config.is_valid.elastic_search.ignored_indexes_dash_prefix.app_error", nil, "", http.StatusBadRequest)
+ }
+ }
+ }
+
return nil
}
diff --git a/webapp/channels/src/components/admin_console/__snapshots__/elasticsearch_settings.test.jsx.snap b/webapp/channels/src/components/admin_console/__snapshots__/elasticsearch_settings.test.jsx.snap
index eb330530b7..d2a5b76c64 100644
--- a/webapp/channels/src/components/admin_console/__snapshots__/elasticsearch_settings.test.jsx.snap
+++ b/webapp/channels/src/components/admin_console/__snapshots__/elasticsearch_settings.test.jsx.snap
@@ -362,6 +362,25 @@ exports[`components/ElasticSearchSettings should match snapshot, disabled 1`] =
}
}
/>
+
+ }
+ id="ignoredPurgeIndexes"
+ label={
+
+ }
+ onChange={[Function]}
+ placeholder="E.g.: .opendistro*,.security*"
+ setByEnv={false}
+ />
+
+ }
+ id="ignoredPurgeIndexes"
+ label={
+
+ }
+ onChange={[Function]}
+ placeholder="E.g.: .opendistro*,.security*"
+ setByEnv={false}
+ />
)}
/>
+
+ }
+ placeholder={'E.g.: .opendistro*,.security*'}
+ helpText={
+
+ }
+ value={this.state.ignoredPurgeIndexes}
+ disabled={this.props.isDisabled || !this.state.enableIndexing}
+ onChange={this.handleSettingChanged}
+ setByEnv={this.isSetByEnv('ElasticsearchSettings.IgnoredPurgeIndexes')}
+ />