如何使用SearchResponse中的elasticSearch java api访问聚合结果?

 ruanbaoshuijingkou 发布于 2023-02-04 20:27

有没有办法使用java API检索搜索响应中的聚合桶?

{
  "took" : 185,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 200,
    "max_score" : 1.0,
    "hits" : [...]
  },
  "aggregations" : {
    "agg1" : {
      "buckets" : [...]
    },
    "agg2" : {
      "buckets" : [...]
    }
  }
}

目前,有可能获得聚合但我无法弄清楚如何获得桶.

当前1.0版本的ElasticSearch(v1.0.0.Beta2)仍然是测试版,也许这个功能仍然需要添加,但也没有找到关于这一点的信息.

2 个回答
  • 如果有人想知道访问实际文档,那么代码可能有所帮助.

    Terms  terms = response.getAggregations().get("agg1");
    Collection<Terms.Bucket> buckets = terms.getBuckets();
    for (Bucket bucket : buckets) {
        System.out.println(bucket.getKeyAsText() +" ("+bucket.getDocCount()+")");
    }
    

    2023-02-04 20:31 回答
  • 查看Github上的ES源代码,我在他们的测试中看到以下内容:

    SearchResponse response = client().prepareSearch("idx").setTypes("type")
                    .setQuery(matchAllQuery())
                    .addAggregation(terms("keys").field("key").size(3).order(Terms.Order.count(false)))
                    .execute().actionGet();
    
    Terms  terms = response.getAggregations().get("keys");
    Collection<Terms.Bucket> buckets = terms.getBuckets();
    assertThat(buckets.size(), equalTo(3));
    

    2023-02-04 20:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有