elasticsearch 学习之路-过滤后聚合(FilterAggregationBuilder)

FilterAggregationBuilder:是elasticsearch 中过滤后,聚合一个神奇工具,官网例子:java

POST /sales/_search?size=0
{
    "aggs" : {
        "t_shirts" : {
            "filter" : { "term": { "type": "t-shirt" } },
            "aggs" : {
                "avg_price" : { "avg" : { "field" : "price" } }
            }
        }
    }
}

显示 类型 t-shirt 的平均价格,先根据类型过滤,而后在进行聚合计算api

在java api 中使用的例子:其中某些值须要使用者,修改,elasticsearch

AggregationBuilder aggregation= AggregationBuilders.terms("customer").field("province.raw");
//新增客户
BoolQueryBuilder addCustomer=QueryBuilders.boolQuery();
addCustomer.must(QueryBuilders.rangeQuery("start_time").from(System.currentTimeMillis()-(10*1000 * 60 * 60 * 24)).to(
        Instant.now().toEpochMilli()));
FilterAggregationBuilder addAggregationBuilder= AggregationBuilders.filter("add",
        addCustomer).subAggregation(aggregation);
//新增签约
BoolQueryBuilder addSignBuilder=QueryBuilders.boolQuery();
//客户id
addSignBuilder.must(QueryBuilders.termsQuery("id.raw","36v91l0mrP_76359904-5274-4a0a-a4ac-9cffb64ef079"));
//客户建立时间
addSignBuilder.must(QueryBuilders.rangeQuery("start_time").from(System.currentTimeMillis()-(10*1000 * 60 * 60 * 24)).to(
        Instant.now().toEpochMilli()));
FilterAggregationBuilder  addSignAggBuilder= AggregationBuilders.filter("add_sign",
        addSignBuilder).subAggregation(aggregation);
//签约客户
BoolQueryBuilder sign=QueryBuilders.boolQuery();
//客户id
sign.must(QueryBuilders.termsQuery("id.raw","36v91l0mrP_76359904-5274-4a0a-a4ac-9cffb64ef079"));
//
FilterAggregationBuilder signAggBuilder= AggregationBuilders.filter("sign",
        sign).subAggregation(aggregation);
SearchRequestBuilder searchRequestBuilder=EsClient.client.filterWithHeader(headers).prepareSearch("customer_36v91l0mrp*").setTypes("customer").
        setSize(5).setQuery(boolQueryBuilder).setFetchSource(new String[]{"customer_id"},null)
        .addAggregation(addSignAggBuilder).addAggregation(addAggregationBuilder).addAggregation(signAggBuilder);
LOGGER.info("查询条件:"+searchRequestBuilder.toString());
SearchResponse searchResponse=searchRequestBuilder.execute().actionGet();
相关文章
相关标签/搜索