ES度量聚合(ElasticSearch Metric Aggregations)

本文介绍了Java面试常见题型,包括加权平均、基数聚合、扩展统计、百分位计算以及百分位范围等技术详解,同时提供了学习资料链接。作者分享了个人的面试经历,涵盖阿里、饿了么、美团等多家知名企业的经验。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

);

searchRequest.source(sourceBuilder);

SearchResponse result = client.search(searchRequest, RequestOptions.DEFAULT);

System.out.println(result);

} catch (Throwable e) {

e.printStackTrace();

} finally {

EsClient.close(client);

}

}

其中代码@1:missing(0)表示如果文档中没有取平均值的字段时,则使用该值进行计算,本例中使用0参与计算。

其返回结果如下:

{

“took”:2,

“timed_out”:false,

“_shards”:{

“total”:5,

“successful”:5,

“skipped”:0,

“failed”:0

},

“hits”:{

“total”:39,

“max_score”:0,

“hits”:[

]

},

“aggregations”:{

“avg#avg-aggregation”:{

“value”:1.2820512820512822

}

}

}

Weighted Avg Aggregation 加权平均聚合


加权平均算法,∑(value * weight) / ∑(weight)。

加权平均(weghted_avg)支持的参数列表:

  • value

提供值的字段或脚本的配置。例如定义计算哪个字段的平均值,该值支持如下子参数:

  • field

用来定义平均值的字段名称。

  • missing

用来定义如果匹配到的文档没有avg字段,使用该值来参与计算。

  • weight

用来定义权重的对象,其可选属性如下:

  • field

定义权重来源的字段。

  • missing

如果文档缺失权重来源字段,以该值来代表该文档的权重值。

  • format

数值类型格式化。

  • value_type

用来指定value的类型,例如ValueType.DATE、ValueType.IP等。

示例如下:

POST /exams/_search

{

“size”: 0,

“aggs” : {

“weighted_grade”: {

“weighted_avg”: {

“value”: {

“field”: “grade”

},

“weight”: {

“field”: “weight” // @2

}

}

}

}

}

从文档中抽取属性为weight的字段的值来当权重值。

其JAVA示例如下:

public static void test_weight_avg_aggregation() {

RestHighLevelClient client = EsClient.getClient();

try {

SearchRequest searchRequest = new SearchRequest();

searchRequest.indices(“aggregations_index02”);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

WeightedAvgAggregationBuilder avg = AggregationBuilders.weightedAvg(“avg-aggregation”)

.value(

(new MultiValuesSourceFieldConfig.Builder())

.setFieldName(“num”)

.setMissing(0)

.build()

)

.weight(

(new MultiValuesSourceFieldConfig.Builder())

.setFieldName(“num”)

.setMissing(1)

.build()

)

// .valueType(ValueType.LONG)

;

avg.toString();

sourceBuilder.aggregation(avg);

sourceBuilder.size(0);

sourceBuilder.query(

QueryBuilders.termQuery(“sellerId”, 24)

);

searchRequest.source(sourceBuilder);

SearchResponse result = client.search(searchRequest, RequestOptions.DEFAULT);

System.out.println(result);

} catch (Throwable e) {

e.printStackTrace();

} finally {

EsClient.close(client);

}

}

Cardinality Aggrega

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值