Aggregation در Elasticsearch به ما امکان میدهد دادهها را گروهبندی و تحلیل کنیم، مشابه عملیات GROUP BY
و توابع تجمیعی در SQL. در ادامه یک مثال عملی برای تحلیل محصولات آورده شده است.
مثال: تحلیل میانگین قیمت محصولات به تفکیک برند
GET /products/_search
{
"size": 0,
"aggs": {
"brands": {
"terms": {
"field": "brand.keyword"
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
},
"max_price": {
"max": {
"field": "price"
}
},
"min_price": {
"min": {
"field": "price"
}
}
}
}
}
}
توضیح ساختار
- terms aggregation: گروهبندی محصولات بر اساس برند.
- avg aggregation: محاسبه میانگین قیمت محصولات هر برند.
- max aggregation: پیدا کردن بالاترین قیمت هر برند.
- min aggregation: پیدا کردن پایینترین قیمت هر برند.
نمونه نتیجه خروجی
{
"aggregations": {
"brands": {
"buckets": [
{
"key": "Dell",
"doc_count": 5,
"avg_price": { "value": 2300.5 },
"max_price": { "value": 2500.5 },
"min_price": { "value": 2100.0 }
},
{
"key": "HP",
"doc_count": 3,
"avg_price": { "value": 2000.0 },
"max_price": { "value": 2200.0 },
"min_price": { "value": 1800.0 }
}
]
}
}
}
با این روش میتوان داشبوردهای تحلیلی ساده و پیشرفته ایجاد کرد و به سرعت اطلاعات مفیدی مثل میانگین قیمت، بیشترین و کمترین قیمت هر دستهبندی دریافت نمود.