mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-02 21:53:30 +00:00
This commit is contained in:
parent
0f889e0327
commit
14d82ee7b2
@ -22,7 +22,7 @@ GLOSSARY_TERM_ELASTICSEARCH_INDEX_MAPPING = textwrap.dedent(
|
|||||||
"type": "text"
|
"type": "text"
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "text",
|
"type": "keyword",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
@ -89,6 +89,7 @@ TABLE_ELASTICSEARCH_INDEX_MAPPING = textwrap.dedent(
|
|||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
@ -151,6 +152,7 @@ TABLE_ELASTICSEARCH_INDEX_MAPPING = textwrap.dedent(
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
@ -188,6 +190,7 @@ TABLE_ELASTICSEARCH_INDEX_MAPPING = textwrap.dedent(
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
@ -60,6 +60,7 @@ import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
|
|||||||
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
|
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
|
||||||
import org.elasticsearch.search.SearchModule;
|
import org.elasticsearch.search.SearchModule;
|
||||||
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
||||||
|
import org.elasticsearch.search.aggregations.BucketOrder;
|
||||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||||
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
|
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
|
||||||
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
||||||
@ -353,6 +354,42 @@ public class SearchResource {
|
|||||||
return Response.status(OK).entity(suggest.toString()).build();
|
return Response.status(OK).entity(suggest.toString()).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/aggregate")
|
||||||
|
@Operation(
|
||||||
|
operationId = "getAggregateFields",
|
||||||
|
summary = "Get Aggregated Fields",
|
||||||
|
tags = "search",
|
||||||
|
description = "Get Aggregated Fields from Entities.",
|
||||||
|
responses = {
|
||||||
|
@ApiResponse(
|
||||||
|
responseCode = "200",
|
||||||
|
description = "Table Aggregate API",
|
||||||
|
content = @Content(mediaType = "application/json", schema = @Schema(implementation = Suggest.class)))
|
||||||
|
})
|
||||||
|
public Response aggregate(
|
||||||
|
@Context UriInfo uriInfo,
|
||||||
|
@Context SecurityContext securityContext,
|
||||||
|
@DefaultValue("table_search_index") @QueryParam("index") String index,
|
||||||
|
@Parameter(description = "Field in an entity.") @QueryParam("field") String fieldName,
|
||||||
|
@Parameter(description = "Size field to limit the no.of results returned, defaults to 10")
|
||||||
|
@DefaultValue("10")
|
||||||
|
@QueryParam("size")
|
||||||
|
int size,
|
||||||
|
@DefaultValue("false") @QueryParam("deleted") String deleted)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
||||||
|
searchSourceBuilder
|
||||||
|
.aggregation(
|
||||||
|
AggregationBuilders.terms(fieldName).field(fieldName).size(MAX_AGGREGATE_SIZE).order(BucketOrder.key(true)))
|
||||||
|
.size(0);
|
||||||
|
searchSourceBuilder.timeout(new TimeValue(30, TimeUnit.SECONDS));
|
||||||
|
String response =
|
||||||
|
client.search(new SearchRequest(index).source(searchSourceBuilder), RequestOptions.DEFAULT).toString();
|
||||||
|
return Response.status(OK).entity(response).build();
|
||||||
|
}
|
||||||
|
|
||||||
private SearchSourceBuilder buildAggregateSearchBuilder(String query, int from, int size) {
|
private 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);
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
"type": "text"
|
"type": "text"
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "text",
|
"type": "keyword",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
@ -72,6 +72,7 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
@ -134,6 +135,7 @@
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
@ -171,6 +173,7 @@
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
@ -245,6 +248,7 @@
|
|||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
"normalizer": "lowercase_normalizer",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
"type": "text"
|
"type": "text"
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "text",
|
"type": "keyword",
|
||||||
"fields": {
|
"fields": {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"type": "keyword",
|
"type": "keyword",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user