在 Elasticsearch 中,聚合是用于从数据中提取有关信息的功能强大的工具。它允许您执行类似于 SQL 中的 GROUP BY 和聚合函数(例如 SUM、AVG、MAX、MIN 等)的操作,以便从您的数据中获得有意义的摘要信息。以下是一些常见的分组聚合查询语句,结合示例代码进行说明:
假设我们有一个存储销售订单的索引,每个文档包含以下字段: product_name
(产品名称)、 category
(产品类别)、 price
(价格)和 quantity
(数量)。
词条聚合用于分组并计算每个唯一值的数量。在我们的例子中,我们可以使用它来计算每个产品类别的订单数量。
{
"aggs": {
"categories": {
"terms": {
"field": "category.keyword"
}
}
}
}
求和聚合用于计算指定字段的总和。我们可以使用它来计算每个产品类别的总销售额。
{
"aggs": {
"categories": {
"terms": {
"field": "category.keyword"
},
"aggs": {
"total_sales": {
"sum": {
"field": "price"
}
}
}
}
}
}
平均聚合用于计算指定字段的平均值。我们可以使用它来计算每个产品类别的平均价格。
{
"aggs": {
"categories": {
"terms": {
"field": "category.keyword"
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
最大值和最小值聚合分别用于找到指定字段的最大值和最小值。我们可以使用它们来找到最贵和最便宜的产品。
{
"aggs": {
"max_price": {
"max": {
"field": "price"
}
},
"min_price": {
"min": {
"field": "price"
}
}
}
}
日期直方图聚合用于按时间间隔分组数据。我们可以使用它来查看每月的订单数量。
{
"aggs": {
"sales_over_time": {
"date_histogram": {
"field": "order_date",
"calendar_interval": "month"
}
}
}
}
这些只是 Elasticsearch 中可用的一些聚合类型示例。根据您的需求,您还可以组合和嵌套这些聚合以获得更复杂的分析结果。在实际使用中,确保根据您的索引结构和数据字段进行适当的调整和修改。