X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fsa%2Fsearchdbabstraction%2Futil%2FDocumentSchemaUtil.java;h=3dc03f90f632a016aa40adeaaa0fa012402607f2;hb=refs%2Fchanges%2F97%2F56297%2F5;hp=8c79022677fe40c8b4e1398d4c0d1b10f3c566f3;hpb=77ce5bb14520c262f27995da98e13f64fb9912f5;p=aai%2Fsearch-data-service.git diff --git a/src/main/java/org/onap/aai/sa/searchdbabstraction/util/DocumentSchemaUtil.java b/src/main/java/org/onap/aai/sa/searchdbabstraction/util/DocumentSchemaUtil.java index 8c79022..3dc03f9 100644 --- a/src/main/java/org/onap/aai/sa/searchdbabstraction/util/DocumentSchemaUtil.java +++ b/src/main/java/org/onap/aai/sa/searchdbabstraction/util/DocumentSchemaUtil.java @@ -23,15 +23,23 @@ package org.onap.aai.sa.searchdbabstraction.util; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; + +import org.apache.commons.io.IOUtils; import org.onap.aai.sa.rest.DocumentFieldSchema; import org.onap.aai.sa.rest.DocumentSchema; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; public class DocumentSchemaUtil { + private static String dynamicCustomMapping = null; + private static final String DYNAMIC_CUSTOM_TEMPALTE_FILE = System.getProperty("CONFIG_HOME") + File.separator + + "dynamic-custom-template.json"; + public static String generateDocumentMappings(String documentSchema) throws JsonParseException, JsonMappingException, IOException { @@ -42,11 +50,23 @@ public class DocumentSchemaUtil { return generateDocumentMappings(schema); } - public static String generateDocumentMappings(DocumentSchema schema) { + public static String generateDocumentMappings(DocumentSchema schema) throws IOException { + + // Adding dynamic template to add fielddata=true to dynamic fields of type "string" + // in order to avoid aggregation queries breaking in ESv6.1.2 + if(dynamicCustomMapping == null) { + try { + dynamicCustomMapping = IOUtils.toString(new FileInputStream(DYNAMIC_CUSTOM_TEMPALTE_FILE), "UTF-8").replaceAll("\\s+", ""); + } catch (IOException e) { + throw new IOException("Dynamic Custom template configuration went wrong! Please check for the correct template file.", e); + } + } // Now, generate the Elastic Search mapping json and return it. StringBuilder sb = new StringBuilder(); sb.append("{"); + // Adding custom mapping which adds fielddata=true to dynamic fields of type "string" + sb.append(dynamicCustomMapping != null ? dynamicCustomMapping : ""); sb.append("\"properties\": {"); generateFieldMappings(schema.getFields(), sb);