繁体   English   中英

ElasticSearch Java列出字段的唯一值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM