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 dd14245e887..f4deb161f9f 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 @@ -144,6 +144,7 @@ import org.openmetadata.service.search.indexes.MlModelIndex; import org.openmetadata.service.search.indexes.PipelineIndex; import org.openmetadata.service.search.indexes.QueryIndex; import org.openmetadata.service.search.indexes.SearchEntityIndex; +import org.openmetadata.service.search.indexes.SearchIndex; import org.openmetadata.service.search.indexes.StoredProcedureIndex; import org.openmetadata.service.search.indexes.TableIndex; import org.openmetadata.service.search.indexes.TagIndex; @@ -344,7 +345,17 @@ public class ElasticSearchClient implements SearchClient { } /* For backward-compatibility we continue supporting the deleted argument, this should be removed in future versions */ - if (request.getIndex().equalsIgnoreCase("domain_search_index") + if (request.getIndex().equalsIgnoreCase("all")) { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.should( + QueryBuilders.boolQuery() + .must(searchSourceBuilder.query()) + .must(QueryBuilders.existsQuery("deleted")) + .must(QueryBuilders.termQuery("deleted", request.deleted()))); + boolQueryBuilder.should( + QueryBuilders.boolQuery().must(searchSourceBuilder.query()).mustNot(QueryBuilders.existsQuery("deleted"))); + searchSourceBuilder.query(boolQueryBuilder); + } else if (request.getIndex().equalsIgnoreCase("domain_search_index") || request.getIndex().equalsIgnoreCase("data_product_search_index") || request.getIndex().equalsIgnoreCase("query_search_index") || request.getIndex().equalsIgnoreCase("raw_cost_analysis_report_data_index") @@ -894,7 +905,8 @@ public class ElasticSearchClient implements SearchClient { } private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { - QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query).lenient(true); + QueryStringQueryBuilder queryBuilder = + QueryBuilders.queryStringQuery(query).fields(SearchIndex.getDefaultFields()).lenient(true); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); return addAggregation(searchSourceBuilder); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java index ff071c4a170..c85faaa05ac 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/ContainerIndex.java @@ -1,16 +1,8 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -84,14 +76,7 @@ public class ContainerIndex implements ColumnIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("dataModel.columns.name", 2.0f); fields.put(DATA_MODEL_COLUMNS_NAME_KEYWORD, 10.0f); fields.put("dataModel.columns.name.ngram", 1.0f); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardDataModelIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardDataModelIndex.java index a75461a6742..5a9dc952806 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardDataModelIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardDataModelIndex.java @@ -1,17 +1,8 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -79,16 +70,8 @@ public class DashboardDataModelIndex implements ColumnIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put(COLUMNS_NAME_KEYWORD, 10.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); fields.put("columns.name", 2.0f); fields.put("columns.name.ngram", 1.0f); fields.put("columns.displayName", 1.0f); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java index 238f61177d2..72bf68096da 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DashboardIndex.java @@ -1,17 +1,8 @@ package org.openmetadata.service.search.indexes; import static org.openmetadata.common.utils.CommonUtil.listOrEmpty; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -69,15 +60,7 @@ public class DashboardIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("charts.name", 2.0f); fields.put("charts.description", 1.0f); return fields; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DataProductIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DataProductIndex.java index b2bb68fb7bf..4aaef6dfd52 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DataProductIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DataProductIndex.java @@ -1,16 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -48,15 +38,6 @@ public class DataProductIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); - return fields; + return SearchIndex.getDefaultFields(); } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DomainIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DomainIndex.java index 9a2634d59f5..64e1214096b 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DomainIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/DomainIndex.java @@ -1,14 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -45,13 +37,6 @@ public class DomainIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); - return fields; + return SearchIndex.getDefaultFields(); } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/GlossaryTermIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/GlossaryTermIndex.java index ffee76fa687..17f058efd15 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/GlossaryTermIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/GlossaryTermIndex.java @@ -1,16 +1,8 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -49,21 +41,14 @@ public class GlossaryTermIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 10.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 10.0f); - fields.put(NAME_KEYWORD, 1.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put(FULLY_QUALIFIED_NAME + ".keyword", 3.0f); fields.put(FULLY_QUALIFIED_NAME + ".ngram", 1.0f); fields.put("synonyms", 5.0f); fields.put("synonyms.ngram", 1.0f); - fields.put(FIELD_DESCRIPTION, 3.0f); fields.put("glossary.name", 5.0f); fields.put("glossary.displayName", 5.0f); fields.put("glossary.displayName.ngram", 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); return fields; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java index 5f746c796e5..50600913306 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/MlModelIndex.java @@ -1,15 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -55,16 +46,9 @@ public class MlModelIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("mlFeatures.name", 2.0f); fields.put("mlFeatures.description", 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); return fields; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java index ec3ff245a6d..0ea482fbd69 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/PipelineIndex.java @@ -1,15 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -66,16 +57,9 @@ public class PipelineIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("tasks.name", 2.0f); fields.put("tasks.description", 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); return fields; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java index 710a1af3de3..eb918bb96fe 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/QueryIndex.java @@ -1,12 +1,9 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.QUERY; -import static org.openmetadata.service.search.EntityBuilderConstant.*; +import static org.openmetadata.service.search.EntityBuilderConstant.QUERY_NGRAM; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -48,13 +45,9 @@ public class QueryIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 10.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put(QUERY, 10.0f); fields.put(QUERY_NGRAM, 1.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); return fields; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchEntityIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchEntityIndex.java index 604399b0004..d1c48159316 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchEntityIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchEntityIndex.java @@ -1,16 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -53,15 +43,7 @@ public class SearchEntityIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("fields.name", 2.0f); fields.put("fields.children.description", 1.0f); fields.put("fields.children.name", 2.0f); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java index 96f9dad093b..6059c238fe6 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/SearchIndex.java @@ -1,5 +1,15 @@ package org.openmetadata.service.search.indexes; +import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; +import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; +import static org.openmetadata.service.Entity.FIELD_NAME; +import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; +import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; +import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; +import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; +import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; + +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -33,4 +43,17 @@ public interface SearchIndex { CommonUtil.nullOrEmpty(cloneEntity.getDisplayName()) ? cloneEntity.getName() : cloneEntity.getDisplayName()); return cloneEntity; } + + static Map getDefaultFields() { + Map fields = new HashMap<>(); + fields.put(FIELD_DISPLAY_NAME, 15.0f); + fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); + fields.put(FIELD_NAME, 15.0f); + fields.put(FIELD_NAME_NGRAM, 1.0f); + fields.put(DISPLAY_NAME_KEYWORD, 25.0f); + fields.put(NAME_KEYWORD, 25.0f); + fields.put(FIELD_DESCRIPTION, 1.0f); + fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); + return fields; + } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/StoredProcedureIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/StoredProcedureIndex.java index 92bde9de0aa..a145bc3bb1d 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/StoredProcedureIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/StoredProcedureIndex.java @@ -1,14 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -52,13 +44,6 @@ public class StoredProcedureIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); - return fields; + return SearchIndex.getDefaultFields(); } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java index 962f00ede3d..afb41b6e2c1 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TableIndex.java @@ -1,17 +1,8 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -113,20 +104,11 @@ public class TableIndex implements ColumnIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 1.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put(COLUMNS_NAME_KEYWORD, 10.0f); fields.put("columns.name", 2.0f); fields.put("columns.name.ngram", 1.0f); fields.put("columns.displayName", 1.0f); - fields.put("columns.description", 1.0f); fields.put("columns.children.name", 2.0f); return fields; } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TagIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TagIndex.java index 46d2efa9eea..f5358e61f92 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TagIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TagIndex.java @@ -1,14 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -47,14 +39,8 @@ public class TagIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_NAME, 10.0f); - fields.put(FIELD_DISPLAY_NAME, 10.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(NAME_KEYWORD, 25.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("classification.name", 1.0f); - fields.put(FIELD_DESCRIPTION, 3.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); return fields; } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java index 8d8b23b8aae..c254ed2f991 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java @@ -1,11 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -81,10 +76,7 @@ public class TestCaseIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_NAME, 10.0f); - fields.put(FIELD_DESCRIPTION, 3.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put("testSuite.fullyQualifiedName", 10.0f); fields.put("testSuite.name", 10.0f); fields.put("testSuite.description", 3.0f); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java index 127083977ae..fa469767727 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TopicIndex.java @@ -1,17 +1,8 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.ES_MESSAGE_SCHEMA_FIELD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -117,15 +108,7 @@ public class TopicIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 15.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 15.0f); - fields.put(FIELD_NAME_NGRAM, 1.0f); - fields.put(DISPLAY_NAME_KEYWORD, 25.0f); - fields.put(NAME_KEYWORD, 25.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); - fields.put(FIELD_DESCRIPTION, 1.0f); + Map fields = SearchIndex.getDefaultFields(); fields.put(ES_MESSAGE_SCHEMA_FIELD, 2.0f); fields.put("messageSchema.schemaFields.description", 1.0f); fields.put("messageSchema.schemaFields.children.name", 2.0f); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java index 15e5fa04c0d..f215a1cdb41 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/UserIndex.java @@ -1,14 +1,6 @@ package org.openmetadata.service.search.indexes; -import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; -import static org.openmetadata.service.Entity.FIELD_NAME; -import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD; -import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DISPLAY_NAME_NGRAM; -import static org.openmetadata.service.search.EntityBuilderConstant.FULLY_QUALIFIED_NAME_PARTS; -import static org.openmetadata.service.search.EntityBuilderConstant.NAME_KEYWORD; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -47,13 +39,6 @@ public class UserIndex implements SearchIndex { } public static Map getFields() { - Map fields = new HashMap<>(); - fields.put(FIELD_DISPLAY_NAME, 3.0f); - fields.put(DISPLAY_NAME_KEYWORD, 5.0f); - fields.put(FIELD_DISPLAY_NAME_NGRAM, 1.0f); - fields.put(FIELD_NAME, 2.0f); - fields.put(NAME_KEYWORD, 3.0f); - fields.put(FULLY_QUALIFIED_NAME_PARTS, 10.0f); - return fields; + return SearchIndex.getDefaultFields(); } } 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 1d6cf091b89..7e2fedc43a3 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 @@ -59,6 +59,7 @@ import org.openmetadata.service.search.indexes.MlModelIndex; import org.openmetadata.service.search.indexes.PipelineIndex; import org.openmetadata.service.search.indexes.QueryIndex; import org.openmetadata.service.search.indexes.SearchEntityIndex; +import org.openmetadata.service.search.indexes.SearchIndex; import org.openmetadata.service.search.indexes.StoredProcedureIndex; import org.openmetadata.service.search.indexes.TableIndex; import org.openmetadata.service.search.indexes.TagIndex; @@ -336,7 +337,17 @@ public class OpenSearchClient implements SearchClient { } /* For backward-compatibility we continue supporting the deleted argument, this should be removed in future versions */ - if (request.getIndex().equalsIgnoreCase("domain_search_index") + if (request.getIndex().equalsIgnoreCase("all")) { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.should( + QueryBuilders.boolQuery() + .must(searchSourceBuilder.query()) + .must(QueryBuilders.existsQuery("deleted")) + .must(QueryBuilders.termQuery("deleted", request.deleted()))); + boolQueryBuilder.should( + QueryBuilders.boolQuery().must(searchSourceBuilder.query()).mustNot(QueryBuilders.existsQuery("deleted"))); + searchSourceBuilder.query(boolQueryBuilder); + } else if (request.getIndex().equalsIgnoreCase("domain_search_index") || request.getIndex().equalsIgnoreCase("data_product_search_index") || request.getIndex().equalsIgnoreCase("query_search_index") || request.getIndex().equalsIgnoreCase("raw_cost_analysis_report_data_index") @@ -878,7 +889,8 @@ public class OpenSearchClient implements SearchClient { } private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { - QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query).lenient(true); + QueryStringQueryBuilder queryBuilder = + QueryBuilders.queryStringQuery(query).fields(SearchIndex.getDefaultFields()).lenient(true); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); return addAggregation(searchSourceBuilder); } diff --git a/openmetadata-service/src/main/resources/elasticsearch/indexMapping.json b/openmetadata-service/src/main/resources/elasticsearch/indexMapping.json index 7ff32350899..6c1465dcc3e 100644 --- a/openmetadata-service/src/main/resources/elasticsearch/indexMapping.json +++ b/openmetadata-service/src/main/resources/elasticsearch/indexMapping.json @@ -93,7 +93,7 @@ "indexName": "data_product_search_index", "indexMappingFile": "/elasticsearch/%s/data_products_index_mapping.json", "alias": "dataProduct", - "parentAliases": ["domain"] + "parentAliases": ["domain","all"] }, "domain": { "indexName": "domain_search_index", diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AppBar/Suggestions.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AppBar/Suggestions.tsx index 64d58b8375f..24080ac4cd4 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AppBar/Suggestions.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AppBar/Suggestions.tsx @@ -34,6 +34,7 @@ import { import { showErrorToast } from '../../utils/ToastUtils'; import { DashboardSource, + DataProductSource, GlossarySource, MlModelSource, Option, @@ -92,6 +93,9 @@ const Suggestions = ({ const [dataModelSuggestions, setDataModelSuggestions] = useState< DashboardDataModelSearchSource[] >([]); + const [dataProductSuggestions, setDataProductSuggestions] = useState< + DataProductSource[] + >([]); const isMounting = useRef(true); @@ -117,6 +121,9 @@ const Suggestions = ({ ); setGlossarySuggestions(filterOptionsByIndex(options, SearchIndex.GLOSSARY)); setTagSuggestions(filterOptionsByIndex(options, SearchIndex.TAG)); + setDataProductSuggestions( + filterOptionsByIndex(options, SearchIndex.DATA_PRODUCT) + ); }; const getSuggestionsForIndex = ( @@ -175,6 +182,10 @@ const Suggestions = ({ searchIndex: SearchIndex.GLOSSARY, }, { suggestions: tagSuggestions, searchIndex: SearchIndex.TAG }, + { + suggestions: dataProductSuggestions, + searchIndex: SearchIndex.DATA_PRODUCT, + }, ].map(({ suggestions, searchIndex }) => getSuggestionsForIndex(suggestions, searchIndex) )} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/GlobalSearchProvider/GlobalSearchSuggestions/GlobalSearchSuggestions.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/GlobalSearchProvider/GlobalSearchSuggestions/GlobalSearchSuggestions.interface.ts index c4ec19ba861..1f023dc52ba 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/GlobalSearchProvider/GlobalSearchSuggestions/GlobalSearchSuggestions.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/GlobalSearchProvider/GlobalSearchSuggestions/GlobalSearchSuggestions.interface.ts @@ -85,6 +85,10 @@ export interface DashboardDataModelSource extends CommonSource { data_model_id: string; data_model_name: string; } +export interface DataProductSource extends CommonSource { + data_product_id: string; + data_product_name: string; +} export interface Option { _index: string; @@ -99,7 +103,8 @@ export interface Option { DashboardDataModelSearchSource & GlossarySource & TagSource & - SearchIndexSource; + SearchIndexSource & + DataProductSource; } export type SearchSuggestions = @@ -113,4 +118,5 @@ export type SearchSuggestions = | MlModelSource[] | SearchIndexSource[] | StoredProcedureSearchSource[] - | DashboardDataModelSearchSource[]; + | DashboardDataModelSearchSource[] + | DataProductSource[]; diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/constants.ts index 9799c343cc6..ed7bbb7c19a 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/constants.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/constants.ts @@ -136,6 +136,7 @@ export const globalSearchOptions = [ { value: SearchIndex.GLOSSARY, label: t('label.glossary') }, { value: SearchIndex.TAG, label: t('label.tag') }, { value: SearchIndex.SEARCH_INDEX, label: t('label.search-index') }, + { value: SearchIndex.DATA_PRODUCT, label: t('label.data-product') }, ]; export const DESCRIPTIONLENGTH = 100; diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/explore.constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/explore.constants.ts index 14f2f493e7a..002f9bc0624 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/explore.constants.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/explore.constants.ts @@ -145,4 +145,4 @@ export const COMMON_FILTERS_FOR_DIFFERENT_TABS = [ export const ALL_EXPLORE_SEARCH_INDEX = // eslint-disable-next-line max-len - `${SearchIndex.TABLE},${SearchIndex.TOPIC},${SearchIndex.DASHBOARD},${SearchIndex.PIPELINE},${SearchIndex.MLMODEL},${SearchIndex.STORED_PROCEDURE},${SearchIndex.DASHBOARD_DATA_MODEL},${SearchIndex.CONTAINER},${SearchIndex.GLOSSARY},${SearchIndex.TAG},${SearchIndex.SEARCH_INDEX}` as SearchIndex; + `${SearchIndex.TABLE},${SearchIndex.TOPIC},${SearchIndex.DASHBOARD},${SearchIndex.PIPELINE},${SearchIndex.MLMODEL},${SearchIndex.STORED_PROCEDURE},${SearchIndex.DASHBOARD_DATA_MODEL},${SearchIndex.CONTAINER},${SearchIndex.GLOSSARY},${SearchIndex.TAG},${SearchIndex.SEARCH_INDEX},${SearchIndex.DATA_PRODUCT}` as SearchIndex; diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/ExplorePage/ExplorePageV1.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/ExplorePage/ExplorePageV1.component.tsx index 93a8642d1e4..095c3baccef 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/ExplorePage/ExplorePageV1.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/ExplorePage/ExplorePageV1.component.tsx @@ -326,7 +326,7 @@ const ExplorePageV1: FunctionComponent = () => { setUpdatedAggregations(res.aggregations); }), searchQuery({ - query: escapeESReservedCharacters(searchQueryParam), + query: `*${escapeESReservedCharacters(searchQueryParam)}*`, pageNumber: 0, pageSize: 0, queryFilter: combinedQueryFilter, diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/SearchUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/SearchUtils.tsx index ce0c5a18e2d..d6ebe11dff3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/SearchUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/SearchUtils.tsx @@ -18,6 +18,7 @@ import { isEmpty } from 'lodash'; import React from 'react'; import { Link } from 'react-router-dom'; import { ReactComponent as IconDashboard } from '../assets/svg/dashboard-grey.svg'; +import { ReactComponent as DataProductIcon } from '../assets/svg/ic-data-product.svg'; import { ReactComponent as IconContainer } from '../assets/svg/ic-storage.svg'; import { ReactComponent as IconStoredProcedure } from '../assets/svg/ic-stored-procedure.svg'; import { ReactComponent as IconMlModal } from '../assets/svg/mlmodal.svg'; @@ -150,6 +151,12 @@ export const getGroupLabel = (index: string) => { break; + case SearchIndex.DATA_PRODUCT: + label = i18next.t('label.data-product-plural'); + GroupIcon = DataProductIcon; + + break; + case SearchIndex.TABLE: default: label = i18next.t('label.table-plural');