首页 > 编程语言 >Java操作ElasticSearch(五、聚合分桶)

Java操作ElasticSearch(五、聚合分桶)

时间:2022-12-10 21:11:06浏览次数:47  
标签:聚合 分桶 searchSourceBuilder System ElasticSearch key println Java out

聚合功能通过 SearchSourceBuilder 的 aggregation(AggregationBuilder aggregation) 方法用来构建聚合条件

其中要用到的各种聚合如:

  • Term 聚合
  • Rang 聚合
  • Sum 聚合

等都通过 AggregationBuilders 来提供

 

 

举例,对性别字段 gender 做聚合,

@Test
public void test23() throws IOException {
    SearchRequest request = new SearchRequest("user");
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    searchSourceBuilder.query(QueryBuilders.matchAllQuery());
    // 聚合分桶
    searchSourceBuilder.aggregation(AggregationBuilders.terms("gender_agg_name").field("gender"));
    request.source(searchSourceBuilder);

    SearchResponse response = client.search(request, RequestOptions.DEFAULT);
    SearchHits searchHits = response.getHits();
    System.out.println("命中数:" + searchHits.getTotalHits().value);
    SearchHit[] hits = searchHits.getHits();
    for (SearchHit hit : hits) {
        String sourceAsString = hit.getSourceAsString();
        User user = JSON.parseObject(sourceAsString, User.class);
        System.out.println(user);
    }
    System.out.println("==============================================================");
    Aggregations aggregations = response.getAggregations();
    Terms terms = aggregations.get("gender_agg_name");

    List<? extends Terms.Bucket> buckets = terms.getBuckets();
    for (Terms.Bucket bucket : buckets) {
        // 获取key
        String key = bucket.getKeyAsString();
        System.out.println("key = " + key);
        long count = bucket.getDocCount();
        System.out.println("count = " + count);
    }
}

 

标签:聚合,分桶,searchSourceBuilder,System,ElasticSearch,key,println,Java,out
From: https://www.cnblogs.com/xulinjun/p/16972337.html

相关文章

  • JavaScript:this指针
    this指针,存储的是一个内存地址,如同变量一样,指向一块内存区域;而这个内存区域,保存的就是一个对象的数据,那么这个对象是什么呢?通常来说,this指针,主要是用在方法(函数)中,用来指......
  • 深入解析 JavaScript 中 apply 方法原理
    前言大家好,我是 CoderBin,在面试当中,手撕代码的场景屡见不鲜,手写JS当中的方法更是最常见的一种,所以本文将全面的,详细解析​​apply​​方法的实现原理,并手写出自己的​​a......
  • 前端开发系列023-基础篇之JavaScript和JSON(扩展)
    title:'前端开发系列023-基础篇之JavaScript和JSON(扩展)'tags:-javaScript系列categories:[]date:2017-06-2008:20:13本文输出JSON搜索和JSON转换相关的内容......
  • 前端开发系列022-基础篇之JavaScript和JSON(进阶)
    title:'前端开发系列022-基础篇之JavaScript和JSON(进阶)'tags:-javaScript系列categories:[]date:2017-06-1908:20:13在[javaScript和JSON](http://wendingd......
  • Java方法(1)
          ......
  • 前端开发系列030-基础篇之JavaScript函数基本
    title:'前端开发系列030-基础篇之JavaScript函数基本'tags:-javaScript系列categories:[]date:2017-08-1122:05:13一、函数的创建和结构函数的定义:函数是Jav......
  • Java 第三阶段总结
    前言这几次的PTA相对于前面的多边形来说,我觉得更简单了。因为给了对应的类图,只需要弄明白每个类的作用,就很好写了。而且老师给的时间也很充足,不存在没写完的情况,只不过要......
  • java初步学习 String(基于黑马的课进行自学,初学者,不喜勿喷)11
    初步学习String基本概念String类型即为字符串类型,即“103”,"abc","小陈"等字符类型,在工作中可用于加密,替换,截取,查找等工作不过这种名词显然不能联想到工作的实际样子......
  • [Java] Class<T>
    类Class类Class<T>T:Class对象建模的类的类型除了类使用Class类描述外,一个类中的构造函数、成员变量和一般函数,都是一种事物,java中都会使用一个类描述:构造函数:Con......
  • Java重点 | DateFormat和SimpleDateFormat类
    DateFormat和SimpleDateFormat类DateFormat类和它的子类SimpleDateFormat,后者是前者的子类,所以它有父类的format和parse方法。java.text.DateFormat:是日期/时间格式化......