推荐答案
在 Elasticsearch 中,Metrics 聚合主要用于对数值型字段进行统计分析。常见的 Metrics 聚合包括:
- Avg Aggregation:计算字段的平均值。
- Sum Aggregation:计算字段的总和。
- Min Aggregation:查找字段的最小值。
- Max Aggregation:查找字段的最大值。
- Stats Aggregation:返回字段的统计信息,包括计数、最小值、最大值、平均值和总和。
- Extended Stats Aggregation:在 Stats Aggregation 的基础上,增加方差、标准差等统计信息。
- Value Count Aggregation:计算字段值的数量。
- Cardinality Aggregation:计算字段的唯一值数量(去重计数)。
- Percentiles Aggregation:计算字段的百分位数。
- Percentile Ranks Aggregation:计算字段值的百分位排名。
- Top Hits Aggregation:返回每个分组中的前 N 个文档。
- Geo Bounds Aggregation:计算地理坐标字段的边界框。
- Geo Centroid Aggregation:计算地理坐标字段的质心。
本题详细解读
1. Avg Aggregation
Avg Aggregation 用于计算数值型字段的平均值。例如,计算某个商品的平均价格:
// www.javascriptcn.com code example
{
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}2. Sum Aggregation
Sum Aggregation 用于计算数值型字段的总和。例如,计算某个商品的总销售额:
// www.javascriptcn.com code example
{
"aggs": {
"total_sales": {
"sum": {
"field": "sales"
}
}
}
}3. Min Aggregation
Min Aggregation 用于查找数值型字段的最小值。例如,查找某个商品的最低价格:
// www.javascriptcn.com code example
{
"aggs": {
"min_price": {
"min": {
"field": "price"
}
}
}
}4. Max Aggregation
Max Aggregation 用于查找数值型字段的最大值。例如,查找某个商品的最高价格:
// www.javascriptcn.com code example
{
"aggs": {
"max_price": {
"max": {
"field": "price"
}
}
}
}5. Stats Aggregation
Stats Aggregation 返回字段的统计信息,包括计数、最小值、最大值、平均值和总和。例如,获取某个商品的统计信息:
// www.javascriptcn.com code example
{
"aggs": {
"price_stats": {
"stats": {
"field": "price"
}
}
}
}6. Extended Stats Aggregation
Extended Stats Aggregation 在 Stats Aggregation 的基础上,增加方差、标准差等统计信息。例如,获取某个商品的扩展统计信息:
// www.javascriptcn.com code example
{
"aggs": {
"price_extended_stats": {
"extended_stats": {
"field": "price"
}
}
}
}7. Value Count Aggregation
Value Count Aggregation 用于计算字段值的数量。例如,计算某个商品的评论数量:
// www.javascriptcn.com code example
{
"aggs": {
"comment_count": {
"value_count": {
"field": "comments"
}
}
}
}8. Cardinality Aggregation
Cardinality Aggregation 用于计算字段的唯一值数量(去重计数)。例如,计算某个商品的唯一用户数:
// www.javascriptcn.com code example
{
"aggs": {
"unique_users": {
"cardinality": {
"field": "user_id"
}
}
}
}9. Percentiles Aggregation
Percentiles Aggregation 用于计算字段的百分位数。例如,计算某个商品价格的百分位数:
// www.javascriptcn.com code example
{
"aggs": {
"price_percentiles": {
"percentiles": {
"field": "price"
}
}
}
}10. Percentile Ranks Aggregation
Percentile Ranks Aggregation 用于计算字段值的百分位排名。例如,计算某个商品价格的百分位排名:
// www.javascriptcn.com code example
{
"aggs": {
"price_percentile_ranks": {
"percentile_ranks": {
"field": "price",
"values": [100, 200]
}
}
}
}11. Top Hits Aggregation
Top Hits Aggregation 用于返回每个分组中的前 N 个文档。例如,获取每个商品类别中销量最高的商品:
// www.javascriptcn.com code example
{
"aggs": {
"top_selling_products": {
"terms": {
"field": "category"
},
"aggs": {
"top_sales": {
"top_hits": {
"size": 1,
"sort": [
{
"sales": {
"order": "desc"
}
}
]
}
}
}
}
}
}12. Geo Bounds Aggregation
Geo Bounds Aggregation 用于计算地理坐标字段的边界框。例如,计算某个地理区域的边界框:
// www.javascriptcn.com code example
{
"aggs": {
"geo_bounds": {
"geo_bounds": {
"field": "location"
}
}
}
}13. Geo Centroid Aggregation
Geo Centroid Aggregation 用于计算地理坐标字段的质心。例如,计算某个地理区域的质心:
// www.javascriptcn.com code example
{
"aggs": {
"geo_centroid": {
"geo_centroid": {
"field": "location"
}
}
}
}