Elasticsearch--javaAPI---桶聚合

1、terms聚合

import cn.hadron.es.AggregationUtil;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;

public class AggregationDemo {
    public static void main(String[] args) {
        AggregationUtil util=new AggregationUtil("my-index");
        Terms terms=util.terms("salary");
        for(Terms.Bucket entry:terms.getBuckets()){
            System.out.println(entry.getKey()+":"+entry.getDocCount());
        }
    }
}

2、filter聚合

import cn.hadron.es.AggregationUtil;
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
public class AggregationDemo {
    public static void main(String[] args) {
        AggregationUtil util=new AggregationUtil("my-index");
        Filter filter=util.filter("gender","男");
        System.out.println(filter.getDocCount());
    }
}

3、filters聚合

import cn.hadron.es.AggregationUtil;
import org.elasticsearch.search.aggregations.bucket.filter.Filters;
public class AggregationDemo {
    public static void main(String[] args) {
        AggregationUtil util=new AggregationUtil("my-index");
        Filters agg=util.filters("gender","男","dep","bigdata");
        for(Filters.Bucket entry:agg.getBuckets()){
            System.out.println(entry.getKey()+":"+entry.getDocCount());
        }
    }
}

4、range聚合

import cn.hadron.es.AggregationUtil;
import org.elasticsearch.search.aggregations.bucket.range.Range;

public class AggregationDemo {
    public static void main(String[] args) {
        AggregationUtil util=new AggregationUtil("my-index");
        Range agg=util.range("salary",10000,20000);
        for(Range.Bucket entry:agg.getBuckets()){
            System.out.println(entry.getKey()+":"+entry.getDocCount());
        }
    }
}

5、dateRange聚合

import cn.hadron.es.AggregationUtil;
import org.elasticsearch.search.aggregations.bucket.range.Range;

public class AggregationDemo {
    public static void main(String[] args) {
        AggregationUtil util=new AggregationUtil("website");
        Range agg=util.dateRange("postdate","now-12M/M","now-12M/M");
        for(Range.Bucket entry:agg.getBuckets()){
            System.out.println(entry.getKey()+":"+entry.getDocCount());
        }
    }
}

6、missing聚合

好的,以下是一个简单的ElasticSearch聚合Java API示例: ```java import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval; import org.elasticsearch.search.aggregations.bucket.histogram.Histogram; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.metrics.sum.Sum; import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount; import static org.elasticsearch.index.query.QueryBuilders.rangeQuery; public class ElasticSearchAggregationExample { public static void main(String[] args) { // 创建ElasticSearch客户端 Client client = // ...; // 构建查询条件 QueryBuilder query = QueryBuilders.boolQuery() .must(rangeQuery("timestamp").gte("2022-01-01T00:00:00").lte("2022-01-31T23:59:59")); // 构建聚合条件 AggregationBuilder aggregation = AggregationBuilders .dateHistogram("sales_over_time") .field("timestamp") .dateHistogramInterval(DateHistogramInterval.DAY) .subAggregation( AggregationBuilders .terms("product_types") .field("product_type") .subAggregation( AggregationBuilders.sum("total_sales").field("sales"), AggregationBuilders.count("transaction_count").field("transaction_id") ) ); // 执行查询 SearchResponse response = client.prepareSearch("my_index") .setQuery(query) .addAggregation(aggregation) .execute() .actionGet(); // 解析聚合结果 Histogram histogram = response.getAggregations().get("sales_over_time"); for (Histogram.Bucket bucket : histogram.getBuckets()) { System.out.println("Date: " + bucket.getKeyAsString()); Terms productTypes = bucket.getAggregations().get("product_types"); for (Terms.Bucket productType : productTypes.getBuckets()) { System.out.println("Product Type: " + productType.getKeyAsString()); Sum totalSales = productType.getAggregations().get("total_sales"); System.out.println("Total Sales: " + totalSales.getValue()); ValueCount transactionCount = productType.getAggregations().get("transaction_count"); System.out.println("Transaction Count: " + transactionCount.getValue()); } } // 关闭客户端 client.close(); } } ``` 这个示例通过ElasticSearchJava API执行了一个聚合,其中包含了两层嵌套聚合,分别按照日期和产品类型对销售数据进行了汇总,输出了每个日期和产品类型的销售总额和交易次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值