Elasticsearch 是一个开源的分布式搜索和分析引擎,它提供了强大的聚合功能,用于分析和汇总数据。下面我会为你介绍一些常用的 Elasticsearch 聚合查询语句,并附上相应的示例代码。
假设我们有一个存储商品信息的索引,每个文档包含字段: product_name
(商品名称)、 category
(商品类别)、 price
(商品价格)、 stock
(库存数量)等。
统计某个字段的值的数量。
示例代码:
{
"aggs": {
"category_count": {
"terms": {
"field": "category"
}
}
}
}
统计每个类别的商品数量和平均价格:
示例代码:
{
"aggs": {
"category_stats": {
"terms": {
"field": "category"
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
},
"sum_stock": {
"sum": {
"field": "stock"
}
}
}
}
}
}
按价格范围划分并统计商品数量:
示例代码:
{
"aggs": {
"price_ranges": {
"range": {
"field": "price",
"ranges": [
{
"to": 50
},
{
"from": 50,
"to": 100
},
{
"from": 100
}
]
}
}
}
}
示例代码:
{
"aggs": {
"sales_over_time": {
"date_histogram": {
"field": "date",
"calendar_interval": "month"
},
"aggs": {
"total_sales": {
"sum": {
"field": "sales"
}
}
}
}
}
}
按类别统计每个类别下的最高价格和最低价格。
示例代码:
{
"aggs": {
"category_stats": {
"terms": {
"field": "category"
},
"aggs": {
"max_price": {
"max": {
"field": "price"
}
},
"min_price": {
"min": {
"field": "price"
}
}
}
}
}
}
这些示例代码展示了一些常用的 Elasticsearch 聚合查询语句,但实际上 Elasticsearch 还提供了许多其他聚合操作,例如百分位数、标准差等等。你可以根据你的具体需求选择合适的聚合查询来分析和汇总你的数据。