diff --git a/backend/src/main/java/com/park/utmstack/service/elasticsearch/SearchUtil.java b/backend/src/main/java/com/park/utmstack/service/elasticsearch/SearchUtil.java index 4d0a7133d..9157f2f4f 100644 --- a/backend/src/main/java/com/park/utmstack/service/elasticsearch/SearchUtil.java +++ b/backend/src/main/java/com/park/utmstack/service/elasticsearch/SearchUtil.java @@ -229,7 +229,7 @@ private static void buildIsInFields(BoolQuery.Builder bool, FilterType filter) { final String ctx = CLASSNAME + ".buildIsInFields"; try { filter.validate(); - String value = CustomStringEscapeUtil.opensearchQueryStringEscape(String.valueOf(filter.getValue())); + String value = CustomStringEscapeUtil.openSearchQueryStringEscap(String.valueOf(filter.getValue())); bool.filter(f -> f.queryString(q -> q .defaultField("*") .query("*" + value + "*"))); @@ -242,7 +242,7 @@ private static void buildIsNotInFields(BoolQuery.Builder bool, FilterType filter final String ctx = CLASSNAME + ".buildIsNotInFields"; try { filter.validate(); - String value = CustomStringEscapeUtil.opensearchQueryStringEscape(String.valueOf(filter.getValue())); + String value = CustomStringEscapeUtil.openSearchQueryStringEscap(String.valueOf(filter.getValue())); bool.filter(f -> f.bool(b -> b.mustNot(n -> n.queryString(q -> q .defaultField("*") .query("*" + value + "*"))))); diff --git a/backend/src/main/java/com/park/utmstack/util/CustomStringEscapeUtil.java b/backend/src/main/java/com/park/utmstack/util/CustomStringEscapeUtil.java index 648bc84a4..308cf036f 100644 --- a/backend/src/main/java/com/park/utmstack/util/CustomStringEscapeUtil.java +++ b/backend/src/main/java/com/park/utmstack/util/CustomStringEscapeUtil.java @@ -7,13 +7,19 @@ import java.util.Map; public class CustomStringEscapeUtil { - public static String opensearchQueryStringEscape(String str) { - final String[] chars = new String[] {"+", "-", "=", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "\"", "~", "*", "?", ":", "\\", "/"}; - final Map escapeCustomMap = new HashMap<>(); - escapeCustomMap.put("<", ""); - escapeCustomMap.put(">", ""); - for (String s : chars) - escapeCustomMap.put(s, "\\\\" + s); - return new AggregateTranslator(new LookupTranslator(escapeCustomMap)).translate(str); + + private static final String[] CHARS = new String[] {"+", "-", "=", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "\"", "~", "*", "?", ":", "\\", "/"}; + + private static final Map ESCAPE_CUSTOM_MAP = new HashMap<>(); + + static { + ESCAPE_CUSTOM_MAP.put("<", ""); + ESCAPE_CUSTOM_MAP.put(">", ""); + for (String s : CHARS) + ESCAPE_CUSTOM_MAP.put(s, "\\" + s); + } + + public static String openSearchQueryStringEscap(String str) { + return new AggregateTranslator(new LookupTranslator(ESCAPE_CUSTOM_MAP)).translate(str); } }