在Elasticsearch中,您可以使用聚合(aggregations)来对数据进行分组并计算统计信息。以下是一些常见的聚合类型:
使用terms aggregation可以将文档按照指定字段的值分组。例如,您可以使用以下代码将文档按照"category"字段的值进行分组:
{
"aggs" : {
"group_by_category" : {
"terms" : { "field" : "category" }
}
}
}
使用date histogram aggregation可以将文档按照指定时间字段的值进行分组,并且以固定的时间间隔(例如每天、每周、每月)来创建直方图。例如,以下代码将文档按照"timestamp"字段的月份进行分组:
{
"aggs" : {
"sales_by_month" : {
"date_histogram" : {
"field" : "timestamp",
"interval" : "month"
}
}
}
}
使用range aggregation可以将文档按照指定字段的值范围进行分组。例如,以下代码将文档按照"price"字段的值范围进行分组:
{
"aggs" : {
"price_ranges" : {
"range" : {
"field" : "price",
"ranges" : [
{ "to" : 10 },
{ "from" : 10, "to" : 100 },
{ "from" : 100 }
]
}
}
}
}
使用metrics aggregation可以计算文档的统计信息,例如平均值、总和、最小值、最大值等等。例如,以下代码将计算"sales"字段的总和、平均值和最大值:
{
"aggs" : {
"total_sales" : {
"sum" : { "field" : "sales" }
},
"average_sales" : {
"avg" : { "field" : "sales" }
},
"max_sales" : {
"max" : { "field" : "sales" }
}
}
}
以上是一些常见的聚合类型,在Elasticsearch中还有很多其他的聚合类型可以使用。如果您需要更详细的信息,请参考Elasticsearch官方文档。