diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchIndexUtils.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchIndexUtils.java index cb8c970f306..0e937a6298c 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchIndexUtils.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchIndexUtils.java @@ -1,9 +1,11 @@ package org.openmetadata.service.search; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import org.openmetadata.schema.type.EntityReference; import org.openmetadata.schema.type.TagLabel; @@ -32,20 +34,20 @@ public final class SearchIndexUtils { String[] pathElements = path.split("\\."); Map currentMap = jsonMap; - for (int i = 0; i < pathElements.length - 1; i++) { - String key = pathElements[i]; - Object value = currentMap.get(key); - if (value instanceof Map) { - currentMap = (Map) value; - } else if (value instanceof List) { - List> list = (List>) value; - for (Map item : list) { - removeFieldByPath(item, pathElements[i + 1]); - } - } else { - // Path Not Found - return; + String key = pathElements[0]; + Object value = currentMap.get(key); + if (value instanceof Map) { + currentMap = (Map) value; + } else if (value instanceof List) { + List> list = (List>) value; + for (Map item : list) { + removeFieldByPath( + item, + Arrays.stream(pathElements, 1, pathElements.length).collect(Collectors.joining("."))); } + return; + } else { + return; } // Remove the field at the last path element