[英]ElasticSearch java list unique values of field
嗨,我是弹性搜索的新手,却没有在Java中做到这一点,我在到处都在使用curl解决方案时尝试使用谷歌搜索,而且从curl转换为java时我不太舒服。 我想列出一个字段的唯一值,并且正在使用elasticseach6.1.2和RestHighLevelClient,到目前为止,我的代码是:
SearchRequest searchRequest = new SearchRequest(INDEX);
searchRequest.types(TYPE);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
AggregationBuilder aggregation=AggregationBuilders.missing("agg").field("source");
searchSourceBuilder.aggregation(aggregation);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse =restHighLevelClient.search(searchRequest);
Aggregation aggrega = searchResponse.getAggregations().get("source");
StringTerms st = (StringTerms) aggrega;
System.out.println(searchResponse);
这里有一个名为source的字段,我想用name source列出该字段的唯一值,此代码返回5行,所有字段肯定做错了。
对于弹性版本6.x,请尝试此操作
SearchRequest searchRequest = new SearchRequest(INDEX);
searchRequest.types(TYPE);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
AggregationBuilder aggregation=AggregationBuilders.terms("source_aggs")
.field("source.keyword").size(size)
.order(BucketOrder.count(isAscending));
searchSourceBuilder.aggregation(aggregation);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse =restHighLevelClient.search(searchRequest);
Aggregation aggrega = searchResponse.getAggregations().get("source_aggs");
StringTerms st = (StringTerms) aggrega;
System.out.println(searchResponse);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.