Elasticsearch-এ Complex Data Analysis বলতে এমন ধরনের বিশ্লেষণকে বোঝায়, যেখানে একাধিক Aggregation এবং ফিল্টারিং ব্যবহার করে ডেটা থেকে গভীরতর ইনসাইট বের করা হয়। এই ধরনের বিশ্লেষণে সাধারণত Nested Aggregations, Pipeline Aggregations, এবং বিভিন্ন ফিল্টার ও প্যারামিটার ব্যবহার করা হয়, যাতে ডেটাকে বিভিন্ন স্তরে বিশ্লেষণ করে ফলাফল নির্ধারণ করা যায়।
নিচে Elasticsearch-এ Complex Data Analysis-এর কয়েকটি উদাহরণ দেওয়া হলো:
ধরা যাক, আমাদের একটি ই-কমার্স সাইট আছে, যেখানে মাসিক সেলস ডেটা রয়েছে। আমরা দেখতে চাই প্রতিটি মাসে কতটি বিক্রয় হয়েছে এবং সেই বিক্রয় থেকে একটি মুভিং এভারেজ বের করতে চাই, যাতে বিক্রয় ট্রেন্ড বিশ্লেষণ করা যায়।
GET /sales/_search
{
"size": 0,
"aggs": {
"monthly_sales": {
"date_histogram": {
"field": "sale_date",
"calendar_interval": "month"
},
"aggs": {
"total_sales": {
"sum": {
"field": "amount"
}
},
"moving_avg_sales": {
"moving_avg": {
"buckets_path": "total_sales"
}
}
}
}
}
}
ধরা যাক, আমাদের একটি কর্মচারী ডেটাবেস রয়েছে এবং আমরা প্রতিটি ডিপার্টমেন্টের গড় বেতন এবং ডিপার্টমেন্টভিত্তিক সর্বোচ্চ ও সর্বনিম্ন বেতন নির্ধারণ করতে চাই।
GET /employees/_search
{
"size": 0,
"aggs": {
"department_groups": {
"terms": {
"field": "department.keyword"
},
"aggs": {
"average_salary": {
"avg": {
"field": "salary"
}
},
"max_salary": {
"max": {
"field": "salary"
}
},
"min_salary": {
"min": {
"field": "salary"
}
}
}
}
}
}
ধরা যাক, আমাদের একটি লোকেশনভিত্তিক সেলস ডেটা রয়েছে এবং আমরা প্রতিটি অঞ্চলের বিক্রয় বিশ্লেষণ করতে চাই। আমরা নির্ধারণ করতে চাই প্রতিটি অঞ্চলে কতগুলো সেল হয়েছে এবং সেই অঞ্চলে গড় বিক্রয়ের পরিমাণ।
GET /sales/_search
{
"size": 0,
"aggs": {
"sales_by_location": {
"geo_distance": {
"field": "location",
"origin": "40.7128, -74.0060",
"ranges": [
{ "to": 10 },
{ "from": 10, "to": 50 },
{ "from": 50, "to": 100 }
]
},
"aggs": {
"average_sales_amount": {
"avg": {
"field": "amount"
}
},
"total_sales_count": {
"value_count": {
"field": "amount"
}
}
}
}
}
}
ধরা যাক, আমাদের একটি প্রোডাক্ট রিভিউ সিস্টেম রয়েছে এবং আমরা প্রতিটি প্রোডাক্টের রিভিউ বিশ্লেষণ করতে চাই, যেমন গড় রেটিং, সর্বোচ্চ রেটিং, এবং কতগুলো রিভিউ হয়েছে।
GET /reviews/_search
{
"size": 0,
"aggs": {
"products": {
"terms": {
"field": "product_id.keyword"
},
"aggs": {
"average_rating": {
"avg": {
"field": "rating"
}
},
"max_rating": {
"max": {
"field": "rating"
}
},
"review_count": {
"value_count": {
"field": "rating"
}
}
}
}
}
}
ধরা যাক, আমাদের একটি লগ ফাইল রয়েছে যেখানে প্রতি ঘন্টায় কতগুলো লগ এন্ট্রি হয়েছে তা বিশ্লেষণ করতে হবে। আমরা এক ঘন্টার ভিত্তিতে লগ এন্ট্রিগুলো গ্রুপ করে একটি মুভিং এভারেজ বের করতে চাই।
GET /logs/_search
{
"size": 0,
"aggs": {
"logs_per_hour": {
"date_histogram": {
"field": "timestamp",
"calendar_interval": "hour"
},
"aggs": {
"log_count": {
"value_count": {
"field": "log_id"
}
},
"moving_avg_logs": {
"moving_avg": {
"buckets_path": "log_count"
}
}
}
}
}
}
Elasticsearch-এ Complex Data Analysis করার জন্য বিভিন্ন ধরণের Aggregation এবং ফিল্টার একত্রে ব্যবহার করে গভীরতর ইনসাইট এবং ট্রেন্ড নির্ধারণ করা যায়। Nested Aggregations, Pipeline Aggregations, এবং Geo Aggregations ব্যবহার করে বড় ডেটা সেট থেকে ডেটার সারাংশ এবং প্যাটার্ন নির্ধারণ করা যায়, যা রিপোর্টিং এবং সিদ্ধান্ত নেওয়ার জন্য অত্যন্ত কার্যকরী।
আরও দেখুন...