addded aggreagtions for new indexes and fields and missing things (#13278)

This commit is contained in:
07Himank 2023-09-21 10:41:38 +05:30 committed by GitHub
parent a778500e26
commit 8292ad0078
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 242 additions and 42 deletions

View File

@ -11,6 +11,7 @@ public class EntityBuilderConstant {
public static final String COLUMNS_NAME_KEYWORD = "columns.name.keyword"; public static final String COLUMNS_NAME_KEYWORD = "columns.name.keyword";
public static final String OWNER_DISPLAY_NAME_KEYWORD = "owner.displayName.keyword"; public static final String OWNER_DISPLAY_NAME_KEYWORD = "owner.displayName.keyword";
public static final String DOMAIN_DISPLAY_NAME_KEYWORD = "domain.displayName.keyword";
public static final String DATA_MODEL_COLUMNS_NAME_KEYWORD = "dataModel.columns.name.keyword"; public static final String DATA_MODEL_COLUMNS_NAME_KEYWORD = "dataModel.columns.name.keyword";
public static final String NAME_KEYWORD = "name.keyword"; public static final String NAME_KEYWORD = "name.keyword";
public static final String FIELD_NAME_NGRAM = "name.ngram"; public static final String FIELD_NAME_NGRAM = "name.ngram";

View File

@ -8,6 +8,7 @@ import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.Entity.QUERY; import static org.openmetadata.service.Entity.QUERY;
import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.DOMAIN_DISPLAY_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.ES_MESSAGE_SCHEMA_FIELD; import static org.openmetadata.service.search.EntityBuilderConstant.ES_MESSAGE_SCHEMA_FIELD;
import static org.openmetadata.service.search.EntityBuilderConstant.ES_TAG_FQN_FIELD; import static org.openmetadata.service.search.EntityBuilderConstant.ES_TAG_FQN_FIELD;
import static org.openmetadata.service.search.EntityBuilderConstant.MAX_AGGREGATE_SIZE; import static org.openmetadata.service.search.EntityBuilderConstant.MAX_AGGREGATE_SIZE;
@ -615,7 +616,8 @@ public class ElasticSearchClientImpl implements SearchClient {
searchSourceBuilder.aggregation(AggregationBuilders.terms("database.name.keyword").field("database.name.keyword")); searchSourceBuilder.aggregation(AggregationBuilders.terms("database.name.keyword").field("database.name.keyword"));
searchSourceBuilder searchSourceBuilder
.aggregation(AggregationBuilders.terms("databaseSchema.name.keyword").field("databaseSchema.name.keyword")) .aggregation(AggregationBuilders.terms("databaseSchema.name.keyword").field("databaseSchema.name.keyword"))
.aggregation(AggregationBuilders.terms(COLUMNS_NAME_KEYWORD).field(COLUMNS_NAME_KEYWORD)); .aggregation(AggregationBuilders.terms(COLUMNS_NAME_KEYWORD).field(COLUMNS_NAME_KEYWORD))
.aggregation(AggregationBuilders.terms("tableType").field("tableType"));
return addAggregation(searchSourceBuilder); return addAggregation(searchSourceBuilder);
} }
@ -653,11 +655,8 @@ public class ElasticSearchClientImpl implements SearchClient {
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder searchSourceBuilder.aggregation(AggregationBuilders.terms("glossary.name.keyword").field("glossary.name.keyword"));
.aggregation(AggregationBuilders.terms(ES_TAG_FQN_FIELD).field(ES_TAG_FQN_FIELD).size(MAX_AGGREGATE_SIZE)) return addAggregation(searchSourceBuilder);
.aggregation(AggregationBuilders.terms("glossary.name.keyword").field("glossary.name.keyword"))
.aggregation(AggregationBuilders.terms(OWNER_DISPLAY_NAME_KEYWORD).field(OWNER_DISPLAY_NAME_KEYWORD));
return searchSourceBuilder;
} }
private static SearchSourceBuilder buildTagSearchBuilder(String query, int from, int size) { private static SearchSourceBuilder buildTagSearchBuilder(String query, int from, int size) {
@ -679,8 +678,11 @@ public class ElasticSearchClientImpl implements SearchClient {
hb.field(highlightTagName); hb.field(highlightTagName);
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
return searchBuilder(queryBuilder, hb, from, size) SearchSourceBuilder searchSourceBuilder =
.aggregation(AggregationBuilders.terms("classification.name.keyword").field("classification.name.keyword")); new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder.aggregation(
AggregationBuilders.terms("classification.name.keyword").field("classification.name.keyword"));
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildContainerSearchBuilder(String query, int from, int size) { private static SearchSourceBuilder buildContainerSearchBuilder(String query, int from, int size) {
@ -780,8 +782,9 @@ public class ElasticSearchClientImpl implements SearchClient {
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
SearchSourceBuilder searchSourceBuilder =
return searchBuilder(queryBuilder, hb, from, size); new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildDashboardDataModelsSearch(String query, int from, int size) { private static SearchSourceBuilder buildDashboardDataModelsSearch(String query, int from, int size) {
@ -802,7 +805,13 @@ public class ElasticSearchClientImpl implements SearchClient {
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
return searchBuilder(queryBuilder, hb, from, size); SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder
.aggregation(AggregationBuilders.terms("dataModelType").field("dataModelType"))
.aggregation(AggregationBuilders.terms(COLUMNS_NAME_KEYWORD).field(COLUMNS_NAME_KEYWORD))
.aggregation(AggregationBuilders.terms("project.keyword").field("project.keyword"));
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildDomainsSearch(String query, int from, int size) { private static SearchSourceBuilder buildDomainsSearch(String query, int from, int size) {
@ -844,7 +853,10 @@ public class ElasticSearchClientImpl implements SearchClient {
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
return searchBuilder(queryBuilder, hb, from, size); SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder.aggregation(AggregationBuilders.terms("fields.name.keyword").field("fields.name.keyword"));
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) {
@ -860,11 +872,15 @@ public class ElasticSearchClientImpl implements SearchClient {
AggregationBuilders.terms("service.name.keyword").field("service.name.keyword").size(MAX_AGGREGATE_SIZE)) AggregationBuilders.terms("service.name.keyword").field("service.name.keyword").size(MAX_AGGREGATE_SIZE))
.aggregation( .aggregation(
AggregationBuilders.terms("entityType.keyword").field("entityType.keyword").size(MAX_AGGREGATE_SIZE)) AggregationBuilders.terms("entityType.keyword").field("entityType.keyword").size(MAX_AGGREGATE_SIZE))
.aggregation(AggregationBuilders.terms("tier.tagFQN").field("tier.tagFQN")) .aggregation(AggregationBuilders.terms("tier.tagFQN").field("tier.tagFQN").size(MAX_AGGREGATE_SIZE))
.aggregation( .aggregation(
AggregationBuilders.terms(OWNER_DISPLAY_NAME_KEYWORD) AggregationBuilders.terms(OWNER_DISPLAY_NAME_KEYWORD)
.field(OWNER_DISPLAY_NAME_KEYWORD) .field(OWNER_DISPLAY_NAME_KEYWORD)
.size(MAX_AGGREGATE_SIZE)) .size(MAX_AGGREGATE_SIZE))
.aggregation(
AggregationBuilders.terms(DOMAIN_DISPLAY_NAME_KEYWORD)
.field(DOMAIN_DISPLAY_NAME_KEYWORD)
.size(MAX_AGGREGATE_SIZE))
.aggregation(AggregationBuilders.terms(ES_TAG_FQN_FIELD).field(ES_TAG_FQN_FIELD)); .aggregation(AggregationBuilders.terms(ES_TAG_FQN_FIELD).field(ES_TAG_FQN_FIELD));
return builder; return builder;
@ -944,7 +960,7 @@ public class ElasticSearchClientImpl implements SearchClient {
try { try {
deleteEntityFromElasticSearch(deleteRequest); deleteEntityFromElasticSearch(deleteRequest);
if (!CommonUtil.nullOrEmpty(scriptTxt) && !CommonUtil.nullOrEmpty(field)) { if (!CommonUtil.nullOrEmpty(scriptTxt) && !CommonUtil.nullOrEmpty(field)) {
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest("SearchAlias"); UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(GLOBAL_SEARCH_ALIAS);
updateByQueryRequest.setQuery(new MatchQueryBuilder(field, entity.getFullyQualifiedName())); updateByQueryRequest.setQuery(new MatchQueryBuilder(field, entity.getFullyQualifiedName()));
updateByQueryRequest.setRefresh(true); updateByQueryRequest.setRefresh(true);
Script script = Script script =

View File

@ -3,7 +3,11 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -35,6 +39,12 @@ public class ContainerIndex implements ColumnIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
container.setOwner(owner); container.setOwner(owner);
} }
if (container.getDomain() != null) {
EntityReference domain = container.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
container.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(container); Map<String, Object> doc = JsonUtils.getMap(container);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();
List<SearchSuggest> columnSuggest = new ArrayList<>(); List<SearchSuggest> columnSuggest = new ArrayList<>();

View File

@ -3,7 +3,12 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -34,6 +39,12 @@ public class DashboardDataModelIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
dashboardDataModel.setOwner(owner); dashboardDataModel.setOwner(owner);
} }
if (dashboardDataModel.getDomain() != null) {
EntityReference domain = dashboardDataModel.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
dashboardDataModel.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(dashboardDataModel); Map<String, Object> doc = JsonUtils.getMap(dashboardDataModel);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -4,7 +4,12 @@ import static org.openmetadata.common.utils.CommonUtil.listOrEmpty;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DESCRIPTION_NGRAM;
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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -34,6 +39,12 @@ public class DashboardIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
dashboard.setOwner(owner); dashboard.setOwner(owner);
} }
if (dashboard.getDomain() != null) {
EntityReference domain = dashboard.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
dashboard.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(dashboard); Map<String, Object> doc = JsonUtils.getMap(dashboard);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -1,8 +1,11 @@
package org.openmetadata.service.search.indexes; package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.*;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;

View File

@ -3,7 +3,10 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -32,6 +35,12 @@ public class GlossaryTermIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
glossaryTerm.setOwner(owner); glossaryTerm.setOwner(owner);
} }
if (glossaryTerm.getDomain() != null) {
EntityReference domain = glossaryTerm.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
glossaryTerm.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(glossaryTerm); Map<String, Object> doc = JsonUtils.getMap(glossaryTerm);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -3,7 +3,11 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DESCRIPTION_NGRAM;
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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -33,6 +37,12 @@ public class MlModelIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
mlModel.setOwner(owner); mlModel.setOwner(owner);
} }
if (mlModel.getDomain() != null) {
EntityReference domain = mlModel.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
mlModel.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(mlModel); Map<String, Object> doc = JsonUtils.getMap(mlModel);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);

View File

@ -3,7 +3,11 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; import static org.openmetadata.service.search.EntityBuilderConstant.DISPLAY_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.FIELD_DESCRIPTION_NGRAM;
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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -34,6 +38,12 @@ public class PipelineIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
pipeline.setOwner(owner); pipeline.setOwner(owner);
} }
if (pipeline.getDomain() != null) {
EntityReference domain = pipeline.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
pipeline.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(pipeline); Map<String, Object> doc = JsonUtils.getMap(pipeline);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -1,8 +1,14 @@
package org.openmetadata.service.search.indexes; package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.*;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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_DESCRIPTION_NGRAM;
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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -32,6 +38,12 @@ public class SearchEntityIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
searchIndex.setOwner(owner); searchIndex.setOwner(owner);
} }
if (searchIndex.getDomain() != null) {
EntityReference domain = searchIndex.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
searchIndex.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(searchIndex); Map<String, Object> doc = JsonUtils.getMap(searchIndex);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -3,7 +3,9 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -34,6 +36,12 @@ public class StoredProcedureIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
storedProcedure.setOwner(owner); storedProcedure.setOwner(owner);
} }
if (storedProcedure.getDomain() != null) {
EntityReference domain = storedProcedure.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
storedProcedure.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(storedProcedure); Map<String, Object> doc = JsonUtils.getMap(storedProcedure);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -3,7 +3,12 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -42,6 +47,12 @@ public class TableIndex implements ColumnIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
table.setOwner(owner); table.setOwner(owner);
} }
if (table.getDomain() != null) {
EntityReference domain = table.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
table.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(table); Map<String, Object> doc = JsonUtils.getMap(table);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();
List<SearchSuggest> columnSuggest = new ArrayList<>(); List<SearchSuggest> columnSuggest = new ArrayList<>();

View File

@ -11,7 +11,9 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.openmetadata.common.utils.CommonUtil;
import org.openmetadata.schema.entity.classification.Tag; import org.openmetadata.schema.entity.classification.Tag;
import org.openmetadata.schema.type.EntityReference;
import org.openmetadata.service.Entity; import org.openmetadata.service.Entity;
import org.openmetadata.service.search.SearchIndexUtils; import org.openmetadata.service.search.SearchIndexUtils;
import org.openmetadata.service.search.models.SearchSuggest; import org.openmetadata.service.search.models.SearchSuggest;
@ -26,6 +28,12 @@ public class TagIndex implements ElasticSearchIndex {
} }
public Map<String, Object> buildESDoc() { public Map<String, Object> buildESDoc() {
if (tag.getDomain() != null) {
EntityReference domain = tag.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
tag.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(tag); Map<String, Object> doc = JsonUtils.getMap(tag);
SearchIndexUtils.removeNonIndexableFields(doc, excludeFields); SearchIndexUtils.removeNonIndexableFields(doc, excludeFields);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();

View File

@ -3,7 +3,13 @@ package org.openmetadata.service.search.indexes;
import static org.openmetadata.service.Entity.FIELD_DESCRIPTION; import static org.openmetadata.service.Entity.FIELD_DESCRIPTION;
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
import static org.openmetadata.service.Entity.FIELD_NAME; import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.search.EntityBuilderConstant.*; 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_DESCRIPTION_NGRAM;
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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -39,6 +45,12 @@ public class TopicIndex implements ElasticSearchIndex {
owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName()); owner.setDisplayName(CommonUtil.nullOrEmpty(owner.getDisplayName()) ? owner.getName() : owner.getDisplayName());
topic.setOwner(owner); topic.setOwner(owner);
} }
if (topic.getDomain() != null) {
EntityReference domain = topic.getDomain();
domain.setDisplayName(
CommonUtil.nullOrEmpty(domain.getDisplayName()) ? domain.getName() : domain.getDisplayName());
topic.setDomain(domain);
}
Map<String, Object> doc = JsonUtils.getMap(topic); Map<String, Object> doc = JsonUtils.getMap(topic);
List<SearchSuggest> suggest = new ArrayList<>(); List<SearchSuggest> suggest = new ArrayList<>();
List<SearchSuggest> fieldSuggest = new ArrayList<>(); List<SearchSuggest> fieldSuggest = new ArrayList<>();

View File

@ -8,6 +8,7 @@ import static org.openmetadata.service.Entity.FIELD_NAME;
import static org.openmetadata.service.Entity.QUERY; import static org.openmetadata.service.Entity.QUERY;
import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.COLUMNS_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD; import static org.openmetadata.service.search.EntityBuilderConstant.DATA_MODEL_COLUMNS_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.DOMAIN_DISPLAY_NAME_KEYWORD;
import static org.openmetadata.service.search.EntityBuilderConstant.ES_MESSAGE_SCHEMA_FIELD; import static org.openmetadata.service.search.EntityBuilderConstant.ES_MESSAGE_SCHEMA_FIELD;
import static org.openmetadata.service.search.EntityBuilderConstant.ES_TAG_FQN_FIELD; import static org.openmetadata.service.search.EntityBuilderConstant.ES_TAG_FQN_FIELD;
import static org.openmetadata.service.search.EntityBuilderConstant.MAX_AGGREGATE_SIZE; import static org.openmetadata.service.search.EntityBuilderConstant.MAX_AGGREGATE_SIZE;
@ -69,6 +70,7 @@ import org.openmetadata.service.search.indexes.GlossaryTermIndex;
import org.openmetadata.service.search.indexes.MlModelIndex; import org.openmetadata.service.search.indexes.MlModelIndex;
import org.openmetadata.service.search.indexes.PipelineIndex; import org.openmetadata.service.search.indexes.PipelineIndex;
import org.openmetadata.service.search.indexes.QueryIndex; import org.openmetadata.service.search.indexes.QueryIndex;
import org.openmetadata.service.search.indexes.SearchEntityIndex;
import org.openmetadata.service.search.indexes.StoredProcedureIndex; import org.openmetadata.service.search.indexes.StoredProcedureIndex;
import org.openmetadata.service.search.indexes.TableIndex; import org.openmetadata.service.search.indexes.TableIndex;
import org.openmetadata.service.search.indexes.TagIndex; import org.openmetadata.service.search.indexes.TagIndex;
@ -316,6 +318,9 @@ public class OpenSearchClientImpl implements SearchClient {
case "domain_search_index": case "domain_search_index":
searchSourceBuilder = buildDomainsSearch(request.getQuery(), request.getFrom(), request.getSize()); searchSourceBuilder = buildDomainsSearch(request.getQuery(), request.getFrom(), request.getSize());
break; break;
case "search_entity_index":
searchSourceBuilder = buildSearchEntitySearch(request.getQuery(), request.getFrom(), request.getSize());
break;
default: default:
searchSourceBuilder = buildAggregateSearchBuilder(request.getQuery(), request.getFrom(), request.getSize()); searchSourceBuilder = buildAggregateSearchBuilder(request.getQuery(), request.getFrom(), request.getSize());
break; break;
@ -621,8 +626,8 @@ public class OpenSearchClientImpl implements SearchClient {
searchSourceBuilder.aggregation(AggregationBuilders.terms("database.name.keyword").field("database.name.keyword")); searchSourceBuilder.aggregation(AggregationBuilders.terms("database.name.keyword").field("database.name.keyword"));
searchSourceBuilder searchSourceBuilder
.aggregation(AggregationBuilders.terms("databaseSchema.name.keyword").field("databaseSchema.name.keyword")) .aggregation(AggregationBuilders.terms("databaseSchema.name.keyword").field("databaseSchema.name.keyword"))
.aggregation(AggregationBuilders.terms(COLUMNS_NAME_KEYWORD).field(COLUMNS_NAME_KEYWORD)); .aggregation(AggregationBuilders.terms(COLUMNS_NAME_KEYWORD).field(COLUMNS_NAME_KEYWORD))
.aggregation(AggregationBuilders.terms("tableType").field("tableType"));
return addAggregation(searchSourceBuilder); return addAggregation(searchSourceBuilder);
} }
@ -660,11 +665,8 @@ public class OpenSearchClientImpl implements SearchClient {
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size); new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder searchSourceBuilder.aggregation(AggregationBuilders.terms("glossary.name.keyword").field("glossary.name.keyword"));
.aggregation(AggregationBuilders.terms(ES_TAG_FQN_FIELD).field(ES_TAG_FQN_FIELD).size(MAX_AGGREGATE_SIZE)) return addAggregation(searchSourceBuilder);
.aggregation(AggregationBuilders.terms("glossary.name.keyword").field("glossary.name.keyword"))
.aggregation(AggregationBuilders.terms(OWNER_DISPLAY_NAME_KEYWORD).field(OWNER_DISPLAY_NAME_KEYWORD));
return searchSourceBuilder;
} }
private static SearchSourceBuilder buildTagSearchBuilder(String query, int from, int size) { private static SearchSourceBuilder buildTagSearchBuilder(String query, int from, int size) {
@ -686,8 +688,11 @@ public class OpenSearchClientImpl implements SearchClient {
hb.field(highlightTagName); hb.field(highlightTagName);
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
return searchBuilder(queryBuilder, hb, from, size) SearchSourceBuilder searchSourceBuilder =
.aggregation(AggregationBuilders.terms("classification.name.keyword").field("classification.name.keyword")); new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder.aggregation(
AggregationBuilders.terms("classification.name.keyword").field("classification.name.keyword"));
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildContainerSearchBuilder(String query, int from, int size) { private static SearchSourceBuilder buildContainerSearchBuilder(String query, int from, int size) {
@ -787,7 +792,9 @@ public class OpenSearchClientImpl implements SearchClient {
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
return searchBuilder(queryBuilder, hb, from, size); SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildDashboardDataModelsSearch(String query, int from, int size) { private static SearchSourceBuilder buildDashboardDataModelsSearch(String query, int from, int size) {
@ -808,7 +815,13 @@ public class OpenSearchClientImpl implements SearchClient {
hb.preTags(PRE_TAG); hb.preTags(PRE_TAG);
hb.postTags(POST_TAG); hb.postTags(POST_TAG);
return searchBuilder(queryBuilder, hb, from, size); SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder
.aggregation(AggregationBuilders.terms("dataModelType").field("dataModelType"))
.aggregation(AggregationBuilders.terms(COLUMNS_NAME_KEYWORD).field(COLUMNS_NAME_KEYWORD))
.aggregation(AggregationBuilders.terms("project.keyword").field("project.keyword"));
return addAggregation(searchSourceBuilder);
} }
private static SearchSourceBuilder buildDomainsSearch(String query, int from, int size) { private static SearchSourceBuilder buildDomainsSearch(String query, int from, int size) {
@ -832,6 +845,30 @@ public class OpenSearchClientImpl implements SearchClient {
return searchBuilder(queryBuilder, hb, from, size); return searchBuilder(queryBuilder, hb, from, size);
} }
private static SearchSourceBuilder buildSearchEntitySearch(String query, int from, int size) {
QueryStringQueryBuilder queryBuilder =
QueryBuilders.queryStringQuery(query)
.fields(SearchEntityIndex.getFields())
.defaultOperator(Operator.AND)
.fuzziness(Fuzziness.AUTO);
HighlightBuilder.Field highlightDescription = new HighlightBuilder.Field(FIELD_DESCRIPTION);
highlightDescription.highlighterType(UNIFIED);
HighlightBuilder.Field highlightName = new HighlightBuilder.Field(FIELD_NAME);
highlightName.highlighterType(UNIFIED);
HighlightBuilder hb = new HighlightBuilder();
hb.field(highlightDescription);
hb.field(highlightName);
hb.preTags(PRE_TAG);
hb.postTags(POST_TAG);
SearchSourceBuilder searchSourceBuilder =
new SearchSourceBuilder().query(queryBuilder).highlighter(hb).from(from).size(size);
searchSourceBuilder.aggregation(AggregationBuilders.terms("fields.name.keyword").field("fields.name.keyword"));
return addAggregation(searchSourceBuilder);
}
private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) { private static SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) {
QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query).lenient(true); QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query).lenient(true);
SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size); SearchSourceBuilder searchSourceBuilder = searchBuilder(queryBuilder, null, from, size);
@ -845,11 +882,15 @@ public class OpenSearchClientImpl implements SearchClient {
AggregationBuilders.terms("service.name.keyword").field("service.name.keyword").size(MAX_AGGREGATE_SIZE)) AggregationBuilders.terms("service.name.keyword").field("service.name.keyword").size(MAX_AGGREGATE_SIZE))
.aggregation( .aggregation(
AggregationBuilders.terms("entityType.keyword").field("entityType.keyword").size(MAX_AGGREGATE_SIZE)) AggregationBuilders.terms("entityType.keyword").field("entityType.keyword").size(MAX_AGGREGATE_SIZE))
.aggregation(AggregationBuilders.terms("tier.tagFQN").field("tier.tagFQN")) .aggregation(AggregationBuilders.terms("tier.tagFQN").field("tier.tagFQN").size(MAX_AGGREGATE_SIZE))
.aggregation( .aggregation(
AggregationBuilders.terms(OWNER_DISPLAY_NAME_KEYWORD) AggregationBuilders.terms(OWNER_DISPLAY_NAME_KEYWORD)
.field(OWNER_DISPLAY_NAME_KEYWORD) .field(OWNER_DISPLAY_NAME_KEYWORD)
.size(MAX_AGGREGATE_SIZE)) .size(MAX_AGGREGATE_SIZE))
.aggregation(
AggregationBuilders.terms(DOMAIN_DISPLAY_NAME_KEYWORD)
.field(DOMAIN_DISPLAY_NAME_KEYWORD)
.size(MAX_AGGREGATE_SIZE))
.aggregation(AggregationBuilders.terms(ES_TAG_FQN_FIELD).field(ES_TAG_FQN_FIELD)); .aggregation(AggregationBuilders.terms(ES_TAG_FQN_FIELD).field(ES_TAG_FQN_FIELD));
return builder; return builder;
} }

View File

@ -272,7 +272,13 @@
} }
}, },
"project": { "project": {
"type": "text" "type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}, },
"lifeCycle": { "lifeCycle": {
"type": "object" "type": "object"

View File

@ -92,6 +92,9 @@
"sourceUrl": { "sourceUrl": {
"type": "keyword" "type": "keyword"
}, },
"tableType": {
"type": "keyword"
},
"columns": { "columns": {
"properties": { "properties": {
"name": { "name": {

View File

@ -280,7 +280,13 @@
} }
}, },
"project": { "project": {
"type": "text" "type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}, },
"lifeCycle": { "lifeCycle": {
"type": "object" "type": "object"

View File

@ -111,6 +111,9 @@
"sourceUrl": { "sourceUrl": {
"type": "keyword" "type": "keyword"
}, },
"tableType": {
"type": "keyword"
},
"columns": { "columns": {
"properties": { "properties": {
"name": { "name": {

View File

@ -259,7 +259,13 @@
} }
}, },
"project": { "project": {
"type": "text" "type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}, },
"lifeCycle": { "lifeCycle": {
"type": "object" "type": "object"

View File

@ -76,6 +76,9 @@
"sourceUrl": { "sourceUrl": {
"type": "keyword" "type": "keyword"
}, },
"tableType": {
"type": "keyword"
},
"columns": { "columns": {
"properties": { "properties": {
"name": { "name": {