From: Ray Lee Date: Thu, 6 Sep 2018 06:41:59 +0000 (-0700) Subject: DRYD-482: Add support for tenant-specific ES index settings and mapping config. X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=dba3531b70161e5769cf6f2f45732864c19d4a8e;p=tmp%2Fjakarta-migration.git DRYD-482: Add support for tenant-specific ES index settings and mapping config. --- diff --git a/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java b/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java index 901113619..41c2bee1d 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java +++ b/services/common/src/main/java/org/collectionspace/services/common/ServiceMain.java @@ -41,6 +41,7 @@ import org.collectionspace.services.config.service.InitHandler.Params.Field; import org.collectionspace.services.config.ClientType; import org.collectionspace.services.config.ServiceConfig; import org.collectionspace.services.config.service.ServiceBindingType; +import org.collectionspace.services.config.tenant.ElasticSearchIndexConfig; import org.collectionspace.services.config.tenant.EventListenerConfig; import org.collectionspace.services.config.tenant.EventListenerConfigurations; import org.collectionspace.services.config.tenant.RepositoryDomainType; @@ -1108,7 +1109,7 @@ public class ServiceMain { logger.debug(String.format("Repository name is %s", repositoryName)); Document protoElasticsearchExtensionDoc = XmlTools.fileToXMLDocument(protoElasticsearchExtensionFile); - protoElasticsearchExtensionDoc = updateElasticSearchExtensionDoc(protoElasticsearchExtensionDoc, repositoryName, this.getCspaceInstanceId()); + protoElasticsearchExtensionDoc = updateElasticSearchExtensionDoc(protoElasticsearchExtensionDoc, repositoryName, this.getCspaceInstanceId(), tbt.getElasticSearchIndexConfig()); if (logger.isDebugEnabled()) { String extension = protoElasticsearchExtensionDoc.asXML(); logger.trace(String.format("Updated Elasticsearch extension for '%s' repository: contents=\n", repositoryName, extension)); @@ -1325,7 +1326,7 @@ public class ServiceMain { * This method is filling out the elasticsearch-config.xml file with tenant specific repository information. */ private Document updateElasticSearchExtensionDoc(Document elasticsearchConfigDoc, String repositoryName, - String cspaceInstanceId) { + String cspaceInstanceId, ElasticSearchIndexConfig elasticSearchIndexConfig) { // Set the element's name attribute String indexName = getElasticsearchIndexName(elasticsearchConfigDoc, repositoryName, cspaceInstanceId); @@ -1336,6 +1337,19 @@ public class ServiceMain { elasticsearchConfigDoc = XmlTools.setAttributeValue(elasticsearchConfigDoc, ConfigUtils.ELASTICSEARCH_INDEX_EXTENSION_XPATH + "/elasticSearchIndex", "repository", repositoryName); + if (elasticSearchIndexConfig != null) { + String settings = elasticSearchIndexConfig.getSettings(); + String mapping = elasticSearchIndexConfig.getMapping(); + + if (settings != null) { + XmlTools.setElementValue(elasticsearchConfigDoc, ConfigUtils.ELASTICSEARCH_INDEX_EXTENSION_XPATH + "/elasticSearchIndex/settings", settings); + } + + if (mapping != null) { + XmlTools.setElementValue(elasticsearchConfigDoc, ConfigUtils.ELASTICSEARCH_INDEX_EXTENSION_XPATH + "/elasticSearchIndex/mapping", mapping); + } + } + return elasticsearchConfigDoc; } diff --git a/services/config/src/main/resources/tenant.xsd b/services/config/src/main/resources/tenant.xsd index a38278ba9..592470dc6 100644 --- a/services/config/src/main/resources/tenant.xsd +++ b/services/config/src/main/resources/tenant.xsd @@ -51,6 +51,7 @@ +