您好,我是弹性搜索的新手,却没有在Java中进行操作,我在所有地方都尝试使用谷歌搜索卷毛解决方案,而且在从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的字段,我想用名称source列出该字段的唯一值,这段代码将返回5行,所有字段肯定是完全错误的。
答案 0 :(得分:0)
尝试使用弹性版本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);