diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java index 9bdac7ef8ec6..540ac9648372 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/elasticsearch/ElasticSearchClient.java @@ -1297,6 +1297,23 @@ private static SearchSourceBuilder buildSearchAcrossIndexesBuilder( buildSearchQueryBuilder(query, SearchIndex.getAllFields()); FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); + searchSourceBuilder.aggregation( + AggregationBuilders.terms("database.name.keyword") + .field("database.name.keyword") + .size(MAX_AGGREGATE_SIZE)); + searchSourceBuilder.aggregation( + AggregationBuilders.terms("databaseSchema.name.keyword") + .field("databaseSchema.name.keyword") + .size(MAX_AGGREGATE_SIZE)); + return addAggregation(searchSourceBuilder); + } + + private static SearchSourceBuilder buildDataAssetsSearchBuilder( + String query, int from, int size) { + QueryStringQueryBuilder queryStringBuilder = + buildSearchQueryBuilder(query, SearchIndex.getAllFields()); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); + SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); searchSourceBuilder.aggregation( AggregationBuilders.terms("database.name.keyword") .field("database.name.keyword") @@ -2310,7 +2327,8 @@ private static SearchSourceBuilder getSearchSourceBuilder( "storage_service_index", "search_service_index", "metadata_service_index" -> buildServiceSearchBuilder(q, from, size); - case "all", "dataAsset" -> buildSearchAcrossIndexesBuilder(q, from, size); + case "dataAsset" -> buildDataAssetsSearchBuilder(q, from, size); + case "all" -> buildSearchAcrossIndexesBuilder(q, from, size); default -> buildAggregateSearchBuilder(q, from, size); }; } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java index ac44dfd3479f..509cdbe02f1e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java @@ -1282,6 +1282,24 @@ private static SearchSourceBuilder buildSearchAcrossIndexesBuilder( FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); queryBuilder.boostMode(CombineFunction.SUM); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); + searchSourceBuilder.aggregation( + AggregationBuilders.terms("database.name.keyword") + .field("database.name.keyword") + .size(MAX_AGGREGATE_SIZE)); + searchSourceBuilder.aggregation( + AggregationBuilders.terms("databaseSchema.name.keyword") + .field("databaseSchema.name.keyword") + .size(MAX_AGGREGATE_SIZE)); + return addAggregation(searchSourceBuilder); + } + + private static SearchSourceBuilder buildDataAssetsSearchBuilder( + String query, int from, int size) { + QueryStringQueryBuilder queryStringBuilder = + buildSearchQueryBuilder(query, SearchIndex.getAllFields()); + FunctionScoreQueryBuilder queryBuilder = boostScore(queryStringBuilder); + queryBuilder.boostMode(CombineFunction.SUM); + SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); searchSourceBuilder.aggregation( AggregationBuilders.terms("database.name.keyword") .field("database.name.keyword") @@ -2288,7 +2306,8 @@ private static SearchSourceBuilder getSearchSourceBuilder( "storage_service_index", "search_service_index", "metadata_service_index" -> buildServiceSearchBuilder(q, from, size); - case "all", "dataAsset" -> buildSearchAcrossIndexesBuilder(q, from, size); + case "dataAsset" -> buildDataAssetsSearchBuilder(q, from, size); + case "all" -> buildSearchAcrossIndexesBuilder(q, from, size); default -> buildAggregateSearchBuilder(q, from, size); }; } diff --git a/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json index 9d7fa81fb349..b5bd2181f66b 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/en/test_suite_index_mapping.json @@ -449,6 +449,10 @@ "type": "text" } } + }, + "serviceType": { + "type": "keyword", + "normalizer": "lowercase_normalizer" } } } diff --git a/openmetadata-service/src/main/resources/elasticsearch/jp/test_suite_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/jp/test_suite_index_mapping.json index 3afb08d33688..46bb5c23601e 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/jp/test_suite_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/jp/test_suite_index_mapping.json @@ -429,6 +429,10 @@ } } }, + "serviceType": { + "type": "keyword", + "normalizer": "lowercase_normalizer" + }, "totalVotes": { "type": "long", "null_value": 0 diff --git a/openmetadata-service/src/main/resources/elasticsearch/zh/test_suite_index_mapping.json b/openmetadata-service/src/main/resources/elasticsearch/zh/test_suite_index_mapping.json index 5f5fd9e0cf65..f13e2148a596 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/zh/test_suite_index_mapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/zh/test_suite_index_mapping.json @@ -418,6 +418,10 @@ } } }, + "serviceType": { + "type": "keyword", + "normalizer": "lowercase_normalizer" + }, "totalVotes": { "type": "long", "null_value": 0