From 3bcd4814530abd39e7d58d2fbbf0ce59f0c39788 Mon Sep 17 00:00:00 2001 From: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Date: Fri, 26 Jul 2024 15:54:38 +0530 Subject: [PATCH] allow dropping off pipeline as node (#17020) * allow dropping off pipeline as node * Return Pipeline Nodes in Response * Fix pipeline as a node --------- Co-authored-by: mohitdeuex --- .../search/elasticsearch/ElasticSearchClient.java | 13 ++++++++++--- .../service/search/opensearch/OpenSearchClient.java | 13 ++++++++++--- .../resources/ui/src/constants/Lineage.constants.ts | 4 ++++ 3 files changed, 24 insertions(+), 6 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 81ed8bdb309..9be9d883bb7 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 @@ -803,14 +803,16 @@ public class ElasticSearchClient implements SearchClient { es.org.elasticsearch.action.search.SearchRequest searchRequest = new es.org.elasticsearch.action.search.SearchRequest( Entity.getSearchRepository().getIndexOrAliasName(GLOBAL_SEARCH_ALIAS)); - SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); - searchSourceBuilder.query( + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.should( QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lineage.pipeline.fullyQualifiedName.keyword", fqn))); + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchSourceBuilder.query(boolQueryBuilder); if (CommonUtil.nullOrEmpty(deleted)) { searchSourceBuilder.query( QueryBuilders.boolQuery() - .must(QueryBuilders.termQuery("lineage.pipeline.fullyQualifiedName.keyword", fqn)) + .must(boolQueryBuilder) .must(QueryBuilders.termQuery("deleted", deleted))); } if (!nullOrEmpty(queryFilter) && !queryFilter.equals("{}")) { @@ -860,6 +862,11 @@ public class ElasticSearchClient implements SearchClient { } } } + getLineage( + fqn, downstreamDepth, edges, nodes, queryFilter, "lineage.fromEntity.fqn.keyword", deleted); + getLineage( + fqn, upstreamDepth, edges, nodes, queryFilter, "lineage.toEntity.fqn.keyword", deleted); + // TODO: Fix this , this is hack if (edges.isEmpty()) { es.org.elasticsearch.action.search.SearchRequest searchRequestForEntity = 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 a41d9f2f62b..ca40ecdab4e 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 @@ -801,14 +801,16 @@ public class OpenSearchClient implements SearchClient { os.org.opensearch.action.search.SearchRequest searchRequest = new os.org.opensearch.action.search.SearchRequest( Entity.getSearchRepository().getIndexOrAliasName(GLOBAL_SEARCH_ALIAS)); - SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); - searchSourceBuilder.query( + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.should( QueryBuilders.boolQuery() .must(QueryBuilders.termQuery("lineage.pipeline.fullyQualifiedName.keyword", fqn))); + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchSourceBuilder.query(boolQueryBuilder); if (CommonUtil.nullOrEmpty(deleted)) { searchSourceBuilder.query( QueryBuilders.boolQuery() - .must(QueryBuilders.termQuery("lineage.pipeline.fullyQualifiedName.keyword", fqn)) + .must(boolQueryBuilder) .must(QueryBuilders.termQuery("deleted", deleted))); } if (!nullOrEmpty(queryFilter) && !queryFilter.equals("{}")) { @@ -858,6 +860,11 @@ public class OpenSearchClient implements SearchClient { } } } + getLineage( + fqn, downstreamDepth, edges, nodes, queryFilter, "lineage.fromEntity.fqn.keyword", deleted); + getLineage( + fqn, upstreamDepth, edges, nodes, queryFilter, "lineage.toEntity.fqn.keyword", deleted); + if (edges.isEmpty()) { os.org.opensearch.action.search.SearchRequest searchRequestForEntity = new os.org.opensearch.action.search.SearchRequest( diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/Lineage.constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/Lineage.constants.ts index c000d980356..f3170c2fa30 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/Lineage.constants.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/Lineage.constants.ts @@ -55,6 +55,10 @@ export const entityData = [ type: SearchIndex.CONTAINER, label: t('label.container-plural'), }, + { + type: SearchIndex.PIPELINE, + label: t('label.pipeline-plural'), + }, { type: SearchIndex.SEARCH_INDEX, label: t('label.search-index-plural'),