ElasticSearch java 列出字段的唯一值

ElasticSearch java list unique values of field

你好,我是弹性搜索的新手,不知道如何在 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 行所有字段,我确定我做的完全错误。

弹性版本试试这个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);