From 9dbe7e33761260d0a9d2405bc91c9d36a5b51f6b Mon Sep 17 00:00:00 2001 From: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Date: Thu, 17 Oct 2024 02:14:41 +0530 Subject: [PATCH] Minor : Fix exception in search due to exception in database.displayName and databaseSchema.aggregation (#18290) --- .../elasticsearch/ElasticSearchClient.java | 20 +++++++++++++++++- .../search/opensearch/OpenSearchClient.java | 21 ++++++++++++++++++- .../en/test_suite_index_mapping.json | 4 ++++ .../jp/test_suite_index_mapping.json | 4 ++++ .../zh/test_suite_index_mapping.json | 4 ++++ 5 files changed, 51 insertions(+), 2 deletions(-) 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 9bdac7ef8ec..540ac964837 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 @@ public class ElasticSearchClient implements SearchClient { 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 @@ public class ElasticSearchClient implements SearchClient { "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 ac44dfd3479..509cdbe02f1 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 @@ public class OpenSearchClient implements SearchClient { 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 @@ public class OpenSearchClient implements SearchClient { "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 9d7fa81fb34..b5bd2181f66 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 3afb08d3368..46bb5c23601 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 5f5fd9e0cf6..f13e2148a59 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