diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java index eb53ec43dbd..bc0ba88c0a7 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/search/SearchResource.java @@ -409,10 +409,14 @@ public class SearchResource { @Parameter(description = "Search Index name, defaults to table_search_index") @DefaultValue("table_search_index") @QueryParam("index") - String index) + String index, + @Parameter(description = "Filter documents by deleted param. By default deleted is false") + @DefaultValue("false") + @QueryParam("deleted") + boolean deleted) throws IOException { - return searchRepository.searchByField(fieldName, fieldValue, index); + return searchRepository.searchByField(fieldName, fieldValue, index, deleted); } @GET diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchClient.java index 7f82ec76b2e..ff81ddf08dc 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchClient.java @@ -257,7 +257,8 @@ public interface SearchClient { Response.Status.NOT_IMPLEMENTED, NOT_IMPLEMENTED_ERROR_TYPE, NOT_IMPLEMENTED_METHOD); } - Response searchByField(String fieldName, String fieldValue, String index) throws IOException; + Response searchByField(String fieldName, String fieldValue, String index, Boolean deleted) + throws IOException; Response aggregate(AggregationRequest request) throws IOException; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java index e6ebe5462f8..a45ecafb722 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java @@ -1160,9 +1160,9 @@ public class SearchRepository { .withIsConnectedVia(isConnectedVia(entityType))); } - public Response searchByField(String fieldName, String fieldValue, String index) + public Response searchByField(String fieldName, String fieldValue, String index, Boolean deleted) throws IOException { - return searchClient.searchByField(fieldName, fieldValue, index); + return searchClient.searchByField(fieldName, fieldValue, index, deleted); } public Response aggregate(AggregationRequest request) throws IOException { 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 738757584a7..d1f28802a31 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 @@ -1308,13 +1308,17 @@ public class ElasticSearchClient implements SearchClient { } @Override - public Response searchByField(String fieldName, String fieldValue, String index) + public Response searchByField(String fieldName, String fieldValue, String index, Boolean deleted) throws IOException { es.org.elasticsearch.action.search.SearchRequest searchRequest = new es.org.elasticsearch.action.search.SearchRequest( Entity.getSearchRepository().getIndexOrAliasName(index)); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); - searchSourceBuilder.query(QueryBuilders.wildcardQuery(fieldName, fieldValue)); + BoolQueryBuilder query = + QueryBuilders.boolQuery() + .must(QueryBuilders.wildcardQuery(fieldName, fieldValue)) + .filter(QueryBuilders.termQuery("deleted", deleted)); + searchSourceBuilder.query(query); searchRequest.source(searchSourceBuilder); String response = client.search(searchRequest, RequestOptions.DEFAULT).toString(); return Response.status(OK).entity(response).build(); 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 2d11473a5de..855264ffa62 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 @@ -1382,13 +1382,17 @@ public class OpenSearchClient implements SearchClient { } @Override - public Response searchByField(String fieldName, String fieldValue, String index) + public Response searchByField(String fieldName, String fieldValue, String index, Boolean deleted) throws IOException { os.org.opensearch.action.search.SearchRequest searchRequest = new os.org.opensearch.action.search.SearchRequest( Entity.getSearchRepository().getIndexOrAliasName(index)); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); - searchSourceBuilder.query(QueryBuilders.wildcardQuery(fieldName, fieldValue)); + BoolQueryBuilder query = + QueryBuilders.boolQuery() + .must(QueryBuilders.wildcardQuery(fieldName, fieldValue)) + .filter(QueryBuilders.termQuery("deleted", deleted)); + searchSourceBuilder.query(query); searchRequest.source(searchSourceBuilder); String response = client.search(searchRequest, RequestOptions.DEFAULT).toString(); return Response.status(OK).entity(response).build();