summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2017-05-18 16:26:52 +0100
committerHarrison Healey <harrisonmhealey@gmail.com>2017-05-18 11:26:52 -0400
commit0db5e3922fd5045b3f7f518ad65e42138f0325c4 (patch)
treee225a7191de7915a3da3716601ddb415c4f26979 /model
parent2bbedd9def2a782f370fb5280994ea0ecbf8a7c7 (diff)
downloadchat-0db5e3922fd5045b3f7f518ad65e42138f0325c4.tar.gz
chat-0db5e3922fd5045b3f7f518ad65e42138f0325c4.tar.bz2
chat-0db5e3922fd5045b3f7f518ad65e42138f0325c4.zip
PLT-6472: Basic Elastic Search implementation. (#6382)
* PLT-6472: Basic Elastic Search implementation. This currently supports indexing of posts at create/update/delete time. It does not support batch indexing or reindexing, and does not support any entities other than posts yet. The purpose is to more-or-less replicate the existing full-text search feature but with some of the immediate benefits of using elastic search. * Alter settings for AWS compatability. * Remove unneeded i18n strings.
Diffstat (limited to 'model')
-rw-r--r--model/config.go98
1 files changed, 76 insertions, 22 deletions
diff --git a/model/config.go b/model/config.go
index 907620124..14f092373 100644
--- a/model/config.go
+++ b/model/config.go
@@ -401,29 +401,39 @@ type WebrtcSettings struct {
TurnSharedKey *string
}
+type ElasticSearchSettings struct {
+ ConnectionUrl *string
+ Username *string
+ Password *string
+ EnableIndexing *bool
+ EnableSearching *bool
+ Sniff *bool
+}
+
type Config struct {
- ServiceSettings ServiceSettings
- TeamSettings TeamSettings
- SqlSettings SqlSettings
- LogSettings LogSettings
- PasswordSettings PasswordSettings
- FileSettings FileSettings
- EmailSettings EmailSettings
- RateLimitSettings RateLimitSettings
- PrivacySettings PrivacySettings
- SupportSettings SupportSettings
- GitLabSettings SSOSettings
- GoogleSettings SSOSettings
- Office365Settings SSOSettings
- LdapSettings LdapSettings
- ComplianceSettings ComplianceSettings
- LocalizationSettings LocalizationSettings
- SamlSettings SamlSettings
- NativeAppSettings NativeAppSettings
- ClusterSettings ClusterSettings
- MetricsSettings MetricsSettings
- AnalyticsSettings AnalyticsSettings
- WebrtcSettings WebrtcSettings
+ ServiceSettings ServiceSettings
+ TeamSettings TeamSettings
+ SqlSettings SqlSettings
+ LogSettings LogSettings
+ PasswordSettings PasswordSettings
+ FileSettings FileSettings
+ EmailSettings EmailSettings
+ RateLimitSettings RateLimitSettings
+ PrivacySettings PrivacySettings
+ SupportSettings SupportSettings
+ GitLabSettings SSOSettings
+ GoogleSettings SSOSettings
+ Office365Settings SSOSettings
+ LdapSettings LdapSettings
+ ComplianceSettings ComplianceSettings
+ LocalizationSettings LocalizationSettings
+ SamlSettings SamlSettings
+ NativeAppSettings NativeAppSettings
+ ClusterSettings ClusterSettings
+ MetricsSettings MetricsSettings
+ AnalyticsSettings AnalyticsSettings
+ WebrtcSettings WebrtcSettings
+ ElasticSearchSettings ElasticSearchSettings
}
func (o *Config) ToJson() string {
@@ -1217,6 +1227,36 @@ func (o *Config) SetDefaults() {
*o.ServiceSettings.ClusterLogTimeoutMilliseconds = 2000
}
+ if o.ElasticSearchSettings.ConnectionUrl == nil {
+ o.ElasticSearchSettings.ConnectionUrl = new(string)
+ *o.ElasticSearchSettings.ConnectionUrl = ""
+ }
+
+ if o.ElasticSearchSettings.Username == nil {
+ o.ElasticSearchSettings.Username = new(string)
+ *o.ElasticSearchSettings.Username = ""
+ }
+
+ if o.ElasticSearchSettings.Password == nil {
+ o.ElasticSearchSettings.Password = new(string)
+ *o.ElasticSearchSettings.Password = ""
+ }
+
+ if o.ElasticSearchSettings.EnableIndexing == nil {
+ o.ElasticSearchSettings.EnableIndexing = new(bool)
+ *o.ElasticSearchSettings.EnableIndexing = false
+ }
+
+ if o.ElasticSearchSettings.EnableSearching == nil {
+ o.ElasticSearchSettings.EnableSearching = new(bool)
+ *o.ElasticSearchSettings.EnableSearching = false
+ }
+
+ if o.ElasticSearchSettings.Sniff == nil {
+ o.ElasticSearchSettings.Sniff = new(bool)
+ *o.ElasticSearchSettings.Sniff = true
+ }
+
o.defaultWebrtcSettings()
}
@@ -1448,6 +1488,16 @@ func (o *Config) IsValid() *AppError {
return NewLocAppError("Config.IsValid", "model.config.is_valid.time_between_user_typing.app_error", nil, "")
}
+ if *o.ElasticSearchSettings.EnableIndexing {
+ if len(*o.ElasticSearchSettings.ConnectionUrl) == 0 {
+ return NewLocAppError("Config.IsValid", "model.config.is_valid.elastic_search.connection_url.app_error", nil, "")
+ }
+ }
+
+ if *o.ElasticSearchSettings.EnableSearching && !*o.ElasticSearchSettings.EnableIndexing {
+ return NewLocAppError("Config.IsValid", "model.config.is_valid.elastic_search.enable_searching.app_error", nil, "")
+ }
+
return nil
}
@@ -1488,6 +1538,10 @@ func (o *Config) Sanitize() {
for i := range o.SqlSettings.DataSourceSearchReplicas {
o.SqlSettings.DataSourceSearchReplicas[i] = FAKE_SETTING
}
+
+ *o.ElasticSearchSettings.ConnectionUrl = FAKE_SETTING
+ *o.ElasticSearchSettings.Username = FAKE_SETTING
+ *o.ElasticSearchSettings.Password = FAKE_SETTING
}
func (o *Config) defaultWebrtcSettings() {