This is an automated email from the ASF dual-hosted git repository. pinal-shah pushed a commit to branch ATLAS-4796 in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 9bc599d2863cffb7d94972c3cd8506060c6226e6 Author: Pinal Shah <[email protected]> AuthorDate: Thu Sep 3 20:23:17 2026 +0530 refactoring changes --- .../atlas-docker/docker-compose.atlas-ops.yml | 49 ---------------- .../repository/graphdb/AggregationContext.java | 39 +++---------- .../repository/graphdb/QuickSearchContext.java | 2 +- graphdb/janus/pom.xml | 2 +- .../graphdb/janus/AtlasJanusGraphDatabase.java | 3 +- .../graphdb/janus/AtlasJanusGraphIndexClient.java | 13 ++--- .../graphdb/janus/AtlasJanusGraphManagement.java | 2 +- ...Client.java => AtlasOpenSearchIndexClient.java} | 10 ++-- .../graphdb/janus/AtlasOpenSearchQueryBuilder.java | 8 +-- .../janus/AtlasJanusGraphIndexClientTest.java | 2 +- .../janus/AtlasJanusGraphManagementTest.java | 7 +-- ...st.java => AtlasOpenSearchIndexClientTest.java} | 66 +++++++++++----------- .../janus/OpenSearchQueryCaptureDriver.java | 6 +- .../janus/OpenSearchStateKeywordMappingIT.java | 4 +- .../atlas/discovery/SearchAggregatorImpl.java | 11 +--- .../OpenSearchAggregationsValidationDriver.java | 2 +- .../OpenSearchSearchWeightBaselineDriver.java | 2 +- .../OpenSearchSearchWeightValidationDriver.java | 2 +- 18 files changed, 72 insertions(+), 158 deletions(-) diff --git a/dev-support/atlas-docker/docker-compose.atlas-ops.yml b/dev-support/atlas-docker/docker-compose.atlas-ops.yml deleted file mode 100644 index 7fcc8863d..000000000 --- a/dev-support/atlas-docker/docker-compose.atlas-ops.yml +++ /dev/null @@ -1,49 +0,0 @@ -services: - opensearch-node: - image: opensearchproject/opensearch:latest - container_name: opensearch-node - environment: - - cluster.name=opensearch-cluster - - node.name=opensearch-node - - discovery.type=single-node - - bootstrap.memory_lock=true - - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g" - # --- STOPS SECURITY FROM GENERATING INTERNAL CREDENTIALS --- - - DISABLE_SECURITY_PLUGIN=true - - DISABLE_INSTALL_DEMO_CONFIG=true - ulimits: - memlock: - soft: -1 - hard: -1 - nofile: - soft: 65536 - hard: 65536 - volumes: - - opensearch-data:/usr/share/opensearch/data - ports: - - 9200:9200 - - 9600:9600 - networks: - - atlas - - opensearch-dashboards: - image: opensearchproject/opensearch-dashboards:latest - container_name: opensearch-dashboards - ports: - - 5601:5601 - expose: - - "5601" - environment: - - 'OPENSEARCH_HOSTS=["http://opensearch-node:9200"]' - - DISABLE_SECURITY_DASHBOARDS_PLUGIN=true - networks: - - atlas - depends_on: - - opensearch-node - -volumes: - opensearch-data: - -networks: - atlas: - name: atlasnw diff --git a/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AggregationContext.java b/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AggregationContext.java index db2d4db7c..016d20b5f 100644 --- a/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AggregationContext.java +++ b/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AggregationContext.java @@ -21,7 +21,6 @@ import org.apache.atlas.model.discovery.SearchParameters.FilterCriteria; import org.apache.atlas.type.AtlasEntityType; import org.apache.atlas.type.AtlasStructType.AtlasAttribute; -import java.util.Collections; import java.util.Map; import java.util.Set; @@ -29,7 +28,6 @@ public class AggregationContext { private final String queryString; private final FilterCriteria filterCriteria; private final Set<AtlasEntityType> searchForEntityTypes; - private final Set<String> classificationTypeNames; private final Set<String> aggregationFieldNames; private final Set<AtlasAttribute> aggregationAttributes; private final Map<String, String> indexFieldNameCache; @@ -43,34 +41,15 @@ public class AggregationContext { * @param indexFieldNameCache * @param excludeDeletedEntities a boolean flag to indicate if the deleted entities need to be excluded in search */ - public AggregationContext(String queryString, FilterCriteria filterCriteria, Set<AtlasEntityType> searchForEntityType, - Set<String> classificationTypeNames, Set<String> aggregationFieldNames, - Set<AtlasAttribute> aggregationAttributes, Map<String, String> indexFieldNameCache, - boolean excludeDeletedEntities, boolean includeSubTypes) { - this.queryString = queryString; - this.filterCriteria = filterCriteria; - this.searchForEntityTypes = searchForEntityType; - this.classificationTypeNames = classificationTypeNames == null ? Collections.emptySet() : classificationTypeNames; - this.aggregationFieldNames = aggregationFieldNames; - this.aggregationAttributes = aggregationAttributes; - this.indexFieldNameCache = indexFieldNameCache; - this.excludeDeletedEntities = excludeDeletedEntities; - this.includeSubTypes = includeSubTypes; - } - - /** - * Backward-compatible constructor for callers that do not pass classification filters. - */ - public AggregationContext(String queryString, FilterCriteria filterCriteria, Set<AtlasEntityType> searchForEntityType, - Set<String> aggregationFieldNames, Set<AtlasAttribute> aggregationAttributes, - Map<String, String> indexFieldNameCache, boolean excludeDeletedEntities, - boolean includeSubTypes) { - this(queryString, filterCriteria, searchForEntityType, Collections.emptySet(), aggregationFieldNames, - aggregationAttributes, indexFieldNameCache, excludeDeletedEntities, includeSubTypes); - } - - public Set<String> getClassificationTypeNames() { - return classificationTypeNames; + public AggregationContext(String queryString, FilterCriteria filterCriteria, Set<AtlasEntityType> searchForEntityType, Set<String> aggregationFieldNames, Set<AtlasAttribute> aggregationAttributes, Map<String, String> indexFieldNameCache, boolean excludeDeletedEntities, boolean includeSubTypes) { + this.queryString = queryString; + this.filterCriteria = filterCriteria; + this.searchForEntityTypes = searchForEntityType; + this.aggregationFieldNames = aggregationFieldNames; + this.aggregationAttributes = aggregationAttributes; + this.indexFieldNameCache = indexFieldNameCache; + this.excludeDeletedEntities = excludeDeletedEntities; + this.includeSubTypes = includeSubTypes; } public String getQueryString() { diff --git a/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/QuickSearchContext.java b/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/QuickSearchContext.java index 4c1e3dfa4..77a20de1b 100644 --- a/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/QuickSearchContext.java +++ b/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/QuickSearchContext.java @@ -24,7 +24,7 @@ import java.util.Map; import java.util.Set; /** - * Inputs for OpenSearch-native weighted quick search (C5.5.3). + * Inputs for OpenSearch-native weighted quick search. */ public class QuickSearchContext { private final String queryString; diff --git a/graphdb/janus/pom.xml b/graphdb/janus/pom.xml index a437e1898..95049aaca 100644 --- a/graphdb/janus/pom.xml +++ b/graphdb/janus/pom.xml @@ -36,7 +36,7 @@ <properties> <checkstyle.failOnViolation>true</checkstyle.failOnViolation> - <checkstyle.skip>true</checkstyle.skip> + <checkstyle.skip>false</checkstyle.skip> </properties> <dependencies> diff --git a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphDatabase.java b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphDatabase.java index c263dc7cd..3bd2469f3 100644 --- a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphDatabase.java +++ b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphDatabase.java @@ -79,6 +79,7 @@ public class AtlasJanusGraphDatabase implements GraphDatabase<AtlasJanusVertex, public static final String SOLR_ZOOKEEPER_URLS = "atlas.graph.index.search.solr.zookeeper-urls"; public static final String INDEX_BACKEND_LUCENE = "lucene"; public static final String INDEX_BACKEND_ES = "elasticsearch"; + public static final String INDEX_BACKEND_OPENSEARCH = "opensearch"; public static final String GRAPH_TX_LOG_CONF = "tx.log-tx"; public static final String GRAPH_TX_LOG_VERBOSE_CONF = "tx.recovery.verbose"; public static final String GRAPH_TX_LOG_TTL_CONF = "log.tx.ttl"; @@ -475,7 +476,7 @@ public class AtlasJanusGraphDatabase implements GraphDatabase<AtlasJanusVertex, Map<String, String> customMap = new HashMap<>(StandardIndexProvider.getAllProviderClasses()); - customMap.put("opensearch", AtlasOpenSearchIndex.class.getName()); + customMap.put(INDEX_BACKEND_OPENSEARCH, AtlasOpenSearchIndex.class.getName()); ImmutableMap<String, String> immap = ImmutableMap.copyOf(customMap); diff --git a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClient.java b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClient.java index 79e311680..13fd7d162 100644 --- a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClient.java +++ b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClient.java @@ -56,7 +56,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -170,7 +169,7 @@ public class AtlasJanusGraphIndexClient implements AtlasGraphIndexClient { String idxBackEnd = configuration != null ? configuration.getString(ApplicationProperties.INDEX_BACKEND_CONF) : null; if (ApplicationProperties.INDEX_BACKEND_OPENSEARCH.equals(idxBackEnd)) { - return AtlasOpenSearchDiscoveryClient.getAggregatedMetrics(aggregationContext, configuration); + return AtlasOpenSearchIndexClient.getAggregatedMetrics(aggregationContext, configuration); } SolrClient solrClient = null; @@ -280,7 +279,7 @@ public class AtlasJanusGraphIndexClient implements AtlasGraphIndexClient { String idxBackEnd = configuration != null ? configuration.getString(ApplicationProperties.INDEX_BACKEND_CONF) : null; if (ApplicationProperties.INDEX_BACKEND_OPENSEARCH.equals(idxBackEnd)) { - return AtlasOpenSearchDiscoveryClient.getSuggestions(prefixString, indexFieldName, configuration); + return AtlasOpenSearchIndexClient.getSuggestions(prefixString, indexFieldName, configuration); } SolrClient solrClient = null; @@ -344,7 +343,7 @@ public class AtlasJanusGraphIndexClient implements AtlasGraphIndexClient { String idxBackEnd = configuration != null ? configuration.getString(ApplicationProperties.INDEX_BACKEND_CONF) : null; if (ApplicationProperties.INDEX_BACKEND_OPENSEARCH.equals(idxBackEnd)) { - return AtlasOpenSearchDiscoveryClient.quickSearch(quickSearchContext, configuration); + return AtlasOpenSearchIndexClient.quickSearch(quickSearchContext, configuration); } return new QuickSearchResult(Collections.emptyList(), 0L); @@ -355,7 +354,7 @@ public class AtlasJanusGraphIndexClient implements AtlasGraphIndexClient { String idxBackEnd = configuration != null ? configuration.getString(ApplicationProperties.INDEX_BACKEND_CONF) : null; if (ApplicationProperties.INDEX_BACKEND_OPENSEARCH.equals(idxBackEnd)) { - AtlasOpenSearchDiscoveryClient.applySearchWeight(indexFieldName2SearchWeightMap); + AtlasOpenSearchIndexClient.applySearchWeight(indexFieldName2SearchWeightMap); return; } @@ -434,7 +433,7 @@ public class AtlasJanusGraphIndexClient implements AtlasGraphIndexClient { String idxBackEnd = configuration != null ? configuration.getString(ApplicationProperties.INDEX_BACKEND_CONF) : null; if (ApplicationProperties.INDEX_BACKEND_OPENSEARCH.equals(idxBackEnd)) { - AtlasOpenSearchDiscoveryClient.applySuggestionFields(suggestionProperties); + AtlasOpenSearchIndexClient.applySuggestionFields(suggestionProperties); return; } @@ -470,7 +469,7 @@ public class AtlasJanusGraphIndexClient implements AtlasGraphIndexClient { String idxBackEnd = configuration != null ? configuration.getString(ApplicationProperties.INDEX_BACKEND_CONF) : null; if (ApplicationProperties.INDEX_BACKEND_OPENSEARCH.equals(idxBackEnd)) { - AtlasOpenSearchDiscoveryClient.setKeywordSubfieldIndexFields(indexFieldNames); + AtlasOpenSearchIndexClient.setKeywordSubfieldIndexFields(indexFieldNames); } } diff --git a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagement.java b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagement.java index b2679dc6d..c58eabde9 100644 --- a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagement.java +++ b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagement.java @@ -362,7 +362,7 @@ public class AtlasJanusGraphManagement implements AtlasGraphManagement { String encodedName = graph.getIndexFieldName(propertyKey, janusGraphIndex, indexParameters); if (usesKeywordSubfieldMapping(isStringField, withKeywordSubfield)) { - AtlasOpenSearchDiscoveryClient.registerKeywordSubfieldField(encodedName); + AtlasOpenSearchIndexClient.registerKeywordSubfieldField(encodedName); } LOG.info("property '{}' is encoded to '{}'.", propertyKey.getName(), encodedName); diff --git a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchDiscoveryClient.java b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchIndexClient.java similarity index 98% rename from graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchDiscoveryClient.java rename to graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchIndexClient.java index 13f5090c9..f59ce05b2 100644 --- a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchDiscoveryClient.java +++ b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchIndexClient.java @@ -48,10 +48,10 @@ import java.util.Set; /** * OpenSearch-native Atlas discovery helper for suggestions and aggregations. Uses * {@link OpenSearchClient#search} with terms aggregations and keeps suggestion-field configuration - * in memory rather than reproducing Solr request-handler setup. + * in memory. */ -public final class AtlasOpenSearchDiscoveryClient { - private static final Logger LOG = LoggerFactory.getLogger(AtlasOpenSearchDiscoveryClient.class); +public final class AtlasOpenSearchIndexClient { + private static final Logger LOG = LoggerFactory.getLogger(AtlasOpenSearchIndexClient.class); private static final String ATLAS_INDEX_NAME_CONF = "atlas.graph.index.search.index-name"; @@ -66,7 +66,7 @@ public final class AtlasOpenSearchDiscoveryClient { private static volatile Map<String, Integer> searchWeightByIndexField = Collections.emptyMap(); private static volatile Set<String> keywordSubfieldIndexFields = Collections.emptySet(); - private AtlasOpenSearchDiscoveryClient() { + private AtlasOpenSearchIndexClient() { } public static void applySearchWeight(Map<String, Integer> indexFieldName2SearchWeightMap) { @@ -101,7 +101,6 @@ public final class AtlasOpenSearchDiscoveryClient { .withIncludeSubTypes(quickSearchContext.isIncludeSubTypes()) .withCommonIndexFieldNames(quickSearchContext.getIndexFieldNameCache()) .withSearchWeights(searchWeightByIndexField) - .withClassificationTypeNames(quickSearchContext.getClassificationTypeNames()) .buildDiscoveryQuery(); Map<String, Object> requestBody = new HashMap<>(); @@ -243,7 +242,6 @@ public final class AtlasOpenSearchDiscoveryClient { .withIncludeSubTypes(aggregationContext.isIncludeSubTypes()) .withCommonIndexFieldNames(indexFieldNameCache) .withSearchWeights(searchWeightByIndexField) - .withClassificationTypeNames(aggregationContext.getClassificationTypeNames()) .buildDiscoveryQuery(); Map<String, Object> aggs = new HashMap<>(); diff --git a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchQueryBuilder.java b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchQueryBuilder.java index 92eef709f..92643a7de 100644 --- a/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchQueryBuilder.java +++ b/graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchQueryBuilder.java @@ -105,12 +105,6 @@ public class AtlasOpenSearchQueryBuilder { return this; } - public AtlasOpenSearchQueryBuilder withClassificationTypeNames(Set<String> classificationTypeNames) { - this.classificationTypeNames = classificationTypeNames; - - return this; - } - /** * @return OpenSearch Query DSL {@code query} clause for discovery (quick search hits and aggregations): * Solr edismax-style {@code dis_max} over weighted fields for plain terms and wildcards; structural @@ -688,7 +682,7 @@ public class AtlasOpenSearchQueryBuilder { } static String toOsField(String indexFieldName) { - return AtlasOpenSearchDiscoveryClient.toOpenSearchFieldName(indexFieldName); + return AtlasOpenSearchIndexClient.toOpenSearchFieldName(indexFieldName); } private static Map<String, Object> singleKeyMap(String key, Object value) { diff --git a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClientTest.java b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClientTest.java index 3d7ea3510..2181c18c5 100644 --- a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClientTest.java +++ b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphIndexClientTest.java @@ -311,7 +311,7 @@ public class AtlasJanusGraphIndexClientTest { indexClient.applySearchWeight("testCollection", weightMap); mockedSolr6Index.verify(Solr6Index::getSolrClient, never()); - assertEquals(AtlasOpenSearchDiscoveryClient.getSearchWeightByIndexField(), weightMap); + assertEquals(AtlasOpenSearchIndexClient.getSearchWeightByIndexField(), weightMap); } @Test diff --git a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagementTest.java b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagementTest.java index d64d25bba..648e24a25 100644 --- a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagementTest.java +++ b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraphManagementTest.java @@ -37,7 +37,6 @@ import org.janusgraph.core.schema.ConsistencyModifier; import org.janusgraph.core.schema.JanusGraphIndex; import org.janusgraph.core.schema.JanusGraphManagement; import org.janusgraph.core.schema.Mapping; -import org.janusgraph.core.schema.Parameter; import org.janusgraph.core.schema.SchemaAction; import org.apache.commons.configuration2.Configuration; import org.mockito.MockedStatic; @@ -114,7 +113,7 @@ public class AtlasJanusGraphManagementTest { @BeforeMethod public void setup() { MockitoAnnotations.openMocks(this); - AtlasOpenSearchDiscoveryClient.clearKeywordSubfieldFieldsForTests(); + AtlasOpenSearchIndexClient.clearKeywordSubfieldFieldsForTests(); database = new AtlasJanusGraphDatabase(); atlasGraph = database.getGraph(); management = new AtlasJanusGraphManagement(mockAtlasGraph, mockJanusManagement); @@ -490,7 +489,7 @@ public class AtlasJanusGraphManagementTest { verify(mockJanusManagement).addIndexKey(eq(mockJanusGraphIndex), eq(mockJanusPropertyKey), any()); verify(mockJanusManagement, never()).addIndexKey(eq(mockJanusGraphIndex), eq(mockJanusPropertyKey), eq(Mapping.STRING.asParameter())); - assertTrue(AtlasOpenSearchDiscoveryClient.usesKeywordSubfield("__state")); + assertTrue(AtlasOpenSearchIndexClient.usesKeywordSubfield("__state")); } } @@ -517,7 +516,7 @@ public class AtlasJanusGraphManagementTest { verify(mockJanusManagement).addIndexKey(eq(mockJanusGraphIndex), eq(mockJanusPropertyKey), any()); verify(mockJanusManagement, never()).addIndexKey(eq(mockJanusGraphIndex), eq(mockJanusPropertyKey), eq(Mapping.STRING.asParameter())); - assertTrue(AtlasOpenSearchDiscoveryClient.usesKeywordSubfield("__typeName")); + assertTrue(AtlasOpenSearchIndexClient.usesKeywordSubfield("__typeName")); } } diff --git a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchDiscoveryClientTest.java b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchIndexClientTest.java similarity index 70% rename from graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchDiscoveryClientTest.java rename to graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchIndexClientTest.java index b6e57ee4f..9fc716394 100644 --- a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchDiscoveryClientTest.java +++ b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/AtlasOpenSearchIndexClientTest.java @@ -34,10 +34,8 @@ import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Set; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -48,74 +46,74 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -public class AtlasOpenSearchDiscoveryClientTest { +public class AtlasOpenSearchIndexClientTest { @BeforeMethod public void setUp() { - AtlasOpenSearchDiscoveryClient.clearKeywordSubfieldFieldsForTests(); - AtlasOpenSearchDiscoveryClient.applySuggestionFields(Collections.emptyList()); + AtlasOpenSearchIndexClient.clearKeywordSubfieldFieldsForTests(); + AtlasOpenSearchIndexClient.applySuggestionFields(Collections.emptyList()); } @AfterMethod public void tearDown() { - AtlasOpenSearchDiscoveryClient.clearKeywordSubfieldFieldsForTests(); - AtlasOpenSearchDiscoveryClient.applySuggestionFields(Collections.emptyList()); + AtlasOpenSearchIndexClient.clearKeywordSubfieldFieldsForTests(); + AtlasOpenSearchIndexClient.applySuggestionFields(Collections.emptyList()); } @Test public void toTermsIncludePatternEscapesRegexMetacharacters() { - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust"), "cust.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust-"), "cust\\-.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust_"), "cust\\_.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust."), "cust\\..*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust+"), "cust\\+.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust*"), "cust\\*.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust?"), "cust\\?.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust("), "cust\\(.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust["), "cust\\[.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust\\"), "cust\\\\.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust"), "cust.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust-"), "cust\\-.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust_"), "cust\\_.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust."), "cust\\..*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust+"), "cust\\+.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust*"), "cust\\*.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust?"), "cust\\?.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust("), "cust\\(.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust["), "cust\\[.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("cust\\"), "cust\\\\.*"); } @Test public void toTermsIncludePatternPreservesCase() { - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("Customer"), "Customer.*"); - assertEquals(AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("CUST"), "CUST.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("Customer"), "Customer.*"); + assertEquals(AtlasOpenSearchIndexClient.toTermsIncludePattern("CUST"), "CUST.*"); } @Test public void resolveTermsAggregationFieldUsesKeywordSubfieldWhenRegistered() { - AtlasOpenSearchDiscoveryClient.registerKeywordSubfieldField("storm_node.description"); + AtlasOpenSearchIndexClient.registerKeywordSubfieldField("storm_node.description"); - assertEquals(AtlasOpenSearchDiscoveryClient.resolveTermsAggregationFieldName("storm_node.description"), + assertEquals(AtlasOpenSearchIndexClient.resolveTermsAggregationFieldName("storm_node.description"), "storm_node\u2022description.keyword"); } @Test public void resolveTermsAggregationFieldUsesBaseFieldForStringMapping() { - assertEquals(AtlasOpenSearchDiscoveryClient.resolveTermsAggregationFieldName("c55_asset\u2022__s_owner"), + assertEquals(AtlasOpenSearchIndexClient.resolveTermsAggregationFieldName("c55_asset\u2022__s_owner"), "c55_asset\u2022__s_owner"); } @Test public void resolveTermsAggregationFieldUsesKeywordSubfieldWhenRegisteredForEntityType() { - AtlasOpenSearchDiscoveryClient.registerKeywordSubfieldField(Constants.ENTITY_TYPE_PROPERTY_KEY); + AtlasOpenSearchIndexClient.registerKeywordSubfieldField(Constants.ENTITY_TYPE_PROPERTY_KEY); - assertEquals(AtlasOpenSearchDiscoveryClient.resolveTermsAggregationFieldName(Constants.ENTITY_TYPE_PROPERTY_KEY), + assertEquals(AtlasOpenSearchIndexClient.resolveTermsAggregationFieldName(Constants.ENTITY_TYPE_PROPERTY_KEY), Constants.ENTITY_TYPE_PROPERTY_KEY + ".keyword"); } @Test public void resolveTermsAggregationFieldUsesNativeKeywordWhenSubfieldNotRegistered() { - AtlasOpenSearchDiscoveryClient.clearKeywordSubfieldFieldsForTests(); + AtlasOpenSearchIndexClient.clearKeywordSubfieldFieldsForTests(); - assertEquals(AtlasOpenSearchDiscoveryClient.resolveTermsAggregationFieldName(Constants.ENTITY_TYPE_PROPERTY_KEY), + assertEquals(AtlasOpenSearchIndexClient.resolveTermsAggregationFieldName(Constants.ENTITY_TYPE_PROPERTY_KEY), Constants.ENTITY_TYPE_PROPERTY_KEY); } @Test public void buildSuggestionsTermsAggsCreatesOneAggPerField() { List<String> fields = Arrays.asList("field_a", "field_b", "field_c"); - Map<String, Object> aggs = AtlasOpenSearchDiscoveryClient.buildSuggestionsTermsAggs(fields, "cust"); + Map<String, Object> aggs = AtlasOpenSearchIndexClient.buildSuggestionsTermsAggs(fields, "cust"); assertEquals(aggs.size(), 3); assertTrue(aggs.containsKey("sugg_0")); @@ -131,9 +129,9 @@ public class AtlasOpenSearchDiscoveryClientTest { @Test public void buildSuggestionsFilterQueryExcludesDeletedEntities() { - AtlasOpenSearchDiscoveryClient.registerKeywordSubfieldField(Constants.STATE_PROPERTY_KEY); + AtlasOpenSearchIndexClient.registerKeywordSubfieldField(Constants.STATE_PROPERTY_KEY); - Map<String, Object> query = AtlasOpenSearchDiscoveryClient.buildSuggestionsFilterQuery(); + Map<String, Object> query = AtlasOpenSearchIndexClient.buildSuggestionsFilterQuery(); Map<String, Object> bool = (Map<String, Object>) query.get("bool"); List<Map<String, Object>> mustNot = (List<Map<String, Object>>) bool.get("must_not"); Map<String, Object> termClause = mustNot.get(0); @@ -153,8 +151,8 @@ public class AtlasOpenSearchDiscoveryClientTest { bucket("customer", 5L), bucket("customer_team", 3L)); - AtlasOpenSearchDiscoveryClient.mergeTermBuckets(termsMap, nameBuckets); - AtlasOpenSearchDiscoveryClient.mergeTermBuckets(termsMap, ownerBuckets); + AtlasOpenSearchIndexClient.mergeTermBuckets(termsMap, nameBuckets); + AtlasOpenSearchIndexClient.mergeTermBuckets(termsMap, ownerBuckets); List<String> top = AtlasJanusGraphIndexClient.getTopTerms(termsMap); @@ -173,7 +171,7 @@ public class AtlasOpenSearchDiscoveryClientTest { aggregations.put("sugg_1", aggResult(bucket("alpha", 2L), bucket("gamma", 4L))); Map<String, AtlasJanusGraphIndexClient.TermFreq> terms = - AtlasOpenSearchDiscoveryClient.collectTermsFromAggregations( + AtlasOpenSearchIndexClient.collectTermsFromAggregations( aggregations, new LinkedHashSet<>(Arrays.asList("sugg_0", "sugg_1"))); assertEquals(terms.get("alpha").getFreq(), 5L); @@ -195,10 +193,10 @@ public class AtlasOpenSearchDiscoveryClientTest { try (MockedStatic<AtlasOpenSearchIndex> mockedIndex = Mockito.mockStatic(AtlasOpenSearchIndex.class)) { mockedIndex.when(AtlasOpenSearchIndex::getOpenSearchClient).thenReturn(mockClient); - AtlasOpenSearchDiscoveryClient.applySuggestionFields( + AtlasOpenSearchIndexClient.applySuggestionFields( Arrays.asList("owner_field", "name_field")); - List<String> result = AtlasOpenSearchDiscoveryClient.getSuggestions("team", null, null); + List<String> result = AtlasOpenSearchIndexClient.getSuggestions("team", null, null); verify(mockClient, times(1)).search(any(), any(), eq(false)); assertFalse(result.isEmpty()); diff --git a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchQueryCaptureDriver.java b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchQueryCaptureDriver.java index 48d667051..6175f12ef 100644 --- a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchQueryCaptureDriver.java +++ b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchQueryCaptureDriver.java @@ -93,12 +93,12 @@ public final class OpenSearchQueryCaptureDriver { emit("TC8-15", "atlas + owner=team-alpha filter", aggBody, "POST /search/quick aggregation on __typeName"); Map<String, Object> suggestBody = new LinkedHashMap<>(); - suggestBody.put("query", AtlasOpenSearchDiscoveryClient.buildSuggestionsFilterQuery()); - suggestBody.put("aggs", AtlasOpenSearchDiscoveryClient.buildSuggestionsTermsAggs( + suggestBody.put("query", AtlasOpenSearchIndexClient.buildSuggestionsFilterQuery()); + suggestBody.put("aggs", AtlasOpenSearchIndexClient.buildSuggestionsTermsAggs( List.of("owner_index", "name_index"), "cust")); emit("TC5-01", "cust", suggestBody, "POST /search/suggestions prefixString=cust"); - emitTermsPattern("TC9-05", "cust_", AtlasOpenSearchDiscoveryClient.toTermsIncludePattern("cust_")); + emitTermsPattern("TC9-05", "cust_", AtlasOpenSearchIndexClient.toTermsIncludePattern("cust_")); } private static void captureQuickSearch(String testId, String atlasQuery, diff --git a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchStateKeywordMappingIT.java b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchStateKeywordMappingIT.java index 640d9d290..0370e3480 100644 --- a/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchStateKeywordMappingIT.java +++ b/graphdb/janus/src/test/java/org/apache/atlas/repository/graphdb/janus/OpenSearchStateKeywordMappingIT.java @@ -124,8 +124,8 @@ public class OpenSearchStateKeywordMappingIT extends OpenSearchITBase { assertTrue(mapping.contains("\"__typeName\""), "mapping should contain __typeName: " + mapping); assertTextWithKeywordSubfield(mapping, "__state"); assertTextWithKeywordSubfield(mapping, "__typeName"); - assertTrue(AtlasOpenSearchDiscoveryClient.usesKeywordSubfield("__state")); - assertTrue(AtlasOpenSearchDiscoveryClient.usesKeywordSubfield("__typeName")); + assertTrue(AtlasOpenSearchIndexClient.usesKeywordSubfield("__state")); + assertTrue(AtlasOpenSearchIndexClient.usesKeywordSubfield("__typeName")); } private static void deleteRecursively(Path path) throws IOException { diff --git a/repository/src/main/java/org/apache/atlas/discovery/SearchAggregatorImpl.java b/repository/src/main/java/org/apache/atlas/discovery/SearchAggregatorImpl.java index 028701673..517f33724 100644 --- a/repository/src/main/java/org/apache/atlas/discovery/SearchAggregatorImpl.java +++ b/repository/src/main/java/org/apache/atlas/discovery/SearchAggregatorImpl.java @@ -57,7 +57,7 @@ public class SearchAggregatorImpl implements SearchAggregator { postProcessors.add(new ServiceTypeAggregator(searchContext.getTypeRegistry())); try { - AtlasGraphIndexClient graphIndexClient = graph.getGraphIndexClient(); + AtlasGraphIndexClient graphIndexClient = graph.getGraphIndexClient(); Set<AtlasEntityType> searchForEntityType = searchContext.getEntityTypes(); if (FreeTextSearchProcessor.isOpenSearchIndexBackend()) { @@ -87,13 +87,8 @@ public class SearchAggregatorImpl implements SearchAggregator { indexFieldNameCache.put(attribute.getQualifiedName(), indexFieldName); } - Set<String> classificationTypeNames = FreeTextSearchProcessor.isOpenSearchIndexBackend() - ? FreeTextSearchProcessor.resolveOpenSearchClassificationTypeNames(searchContext) - : Collections.emptySet(); - - AggregationContext aggregatorContext = new AggregationContext(queryString, searchParameters.getEntityFilters(), - searchForEntityType, classificationTypeNames, aggregationFields, aggregationAttributes, - indexFieldNameCache, searchParameters.getExcludeDeletedEntities(), searchParameters.getIncludeSubTypes()); + AggregationContext aggregatorContext = new AggregationContext(queryString, searchParameters.getEntityFilters(), searchForEntityType, + aggregationFields, aggregationAttributes, indexFieldNameCache, searchParameters.getExcludeDeletedEntities(), searchParameters.getIncludeSubTypes()); Map<String, List<AtlasAggregationEntry>> aggregatedMetrics = graphIndexClient.getAggregatedMetrics(aggregatorContext); diff --git a/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchAggregationsValidationDriver.java b/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchAggregationsValidationDriver.java index 88b02f947..d33bc9191 100644 --- a/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchAggregationsValidationDriver.java +++ b/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchAggregationsValidationDriver.java @@ -504,7 +504,7 @@ public final class OpenSearchAggregationsValidationDriver { Map<String, String> indexFieldNameCache, Set<String> commonFields, Set<AtlasAttribute> attributes, boolean excludeDeleted, boolean includeSubTypes) { - return new AggregationContext(query, filter, entityTypes, Collections.emptySet(), commonFields, attributes, + return new AggregationContext(query, filter, entityTypes, commonFields, attributes, indexFieldNameCache, excludeDeleted, includeSubTypes); } diff --git a/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightBaselineDriver.java b/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightBaselineDriver.java index d5dc7d9e2..521984e67 100644 --- a/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightBaselineDriver.java +++ b/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightBaselineDriver.java @@ -424,7 +424,7 @@ public final class OpenSearchSearchWeightBaselineDriver { cache.put(Constants.ENTITY_TYPE_PROPERTY_KEY, indexFields.typeIndexField); cache.put(Constants.STATE_PROPERTY_KEY, indexFields.stateIndexField); - AggregationContext ctx = new AggregationContext("customer", null, types, Collections.emptySet(), + AggregationContext ctx = new AggregationContext("customer", null, types, Collections.singleton(Constants.ENTITY_TYPE_PROPERTY_KEY), Collections.emptySet(), cache, true, true); diff --git a/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightValidationDriver.java b/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightValidationDriver.java index 4ac9c318a..b8fcb31de 100644 --- a/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightValidationDriver.java +++ b/repository/src/test/java/org/apache/atlas/discovery/smoke/OpenSearchSearchWeightValidationDriver.java @@ -196,7 +196,7 @@ public final class OpenSearchSearchWeightValidationDriver { cache.put(Constants.STATE_PROPERTY_KEY, indexFields.stateIndexField); AggregationContext ctx = new AggregationContext("customer", null, Collections.singleton(typeRegistry.getEntityTypeByName(TYPE_DATASET)), - Collections.emptySet(), Collections.singleton(Constants.ENTITY_TYPE_PROPERTY_KEY), + Collections.singleton(Constants.ENTITY_TYPE_PROPERTY_KEY), Collections.emptySet(), cache, true, true); Map<String, List<AtlasAggregationEntry>> metrics = client.getAggregatedMetrics(ctx); long typeCount = metrics.getOrDefault(Constants.ENTITY_TYPE_PROPERTY_KEY, Collections.emptyList())
