English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
جمع البيانات الأساسية يجمع جميع البيانات التي يتم اختيارها في استعلام البحث، ويتم تشكيله من العديد من المكونات، مما يساعد في بناء تلخيص معقد للبيانات. بنية التجميع الأساسية مثلما يظهر أدناه-
"aggregations" : { "" : { "" : { } ["meta" : { [] } ]? ["aggregations" : { []+ } ]? } ["" : { ... }]* }
تتميز التجميعات بأنواع متعددة، وكل نوع منها له غرضه الخاص. سنتحدث عن هذه المسائل بشكل مفصل في هذا الفصل.
تساعد هذه التجميعات في حساب التمثيل البياني بناءً على قيم المجالات في مستند التجميع، ويمكن أن يتم إنشاء بعض القيم من السكربت أيضًا.
التمثيل البياني يمكن أن يكون قيمة واحدة (مثل تجميع متوسط) أو قيم متعددة (مثل البيانات الإحصائية).
هذا التجميع يستخدم للحصول على متوسط أي مجال عددى موجود في مستند التجميع. على سبيل المثال،
POST /schools/_search { "aggs":{ "avg_fees":{"avg":{"field":"fees"}} } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 41, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score": 1.0, "hits": [ { "_index": "schools", "_type": "school", "_id": "5", "_score": 1.0, "_source": { "name": "Central School", "description": "CBSE Affiliation", "street": "Nagan", "city": "paprola", "state": "HP", "zip": "176115", "location": [ 31.8955385, 76.8380405 ], "fees": 2200, "tags": [ "Senior Secondary", "beautiful campus" ], "rating": "3.3" } }, { "_index": "schools", "_type": "school", "_id": "4", "_score": 1.0, "_source": { "name": "City Best School", "description": "ICSE", "street": "West End", "city": "Meerut", "state": "UP", "zip": "250002", "location": [ 28.9926174, 77.692485 ], "fees": 3500, "tags": [ "fully computerized" ], "rating": "4.5" } } ] }, "aggregations" : { "avg_fees": { "value" : 2850.0 } } }
يقدم هذا التجميع عدد القيم المختلفة الخاصة بمجال معين.
POST /schools/_search?size=0 { "aggs":{ "distinct_name_count":{"cardinality":{"field":"fees"}} } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 2, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "distinct_name_count": { "value": 2 } } }
ملاحظة قيمة القاعدة هي 2، لأن الرسوم تحتوي على قيمتين مختلفتين.
هذا التجميع سينتج عنه جميع الإحصائيات المتعلقة بمجال الرقم المحدد في مستند التجميع.
POST /schools/_search?size=0 { "aggs": { "fees_stats": { "extended_stats": { "field": "fees" } } } } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 8, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "fees_stats": { "count": 2, "min": 2200.0, "max": 3500.0, "avg": 2850.0, "sum": 5700.0, "sum_of_squares": 1.709E7, "variance": 422500.0 "std_deviation": 650.0, "std_deviation_bounds": { "upper": 4150.0, "lower": 1550.0 } } } }
يبحث هذا الجمع عن أعلى قيمة في الحقل الرقمي المحدد في مستندات الجمع.
POST /schools/_search?size=0 { "aggs": { "max_fees": { "max": { "field": "fees" } } } } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 16, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "max_fees": { "value": 3500.0 } } }
يبحث هذا الجمع عن أقل قيمة في الحقل الرقمي المحدد في مستندات الجمع.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "min": { "field": "fees" } } } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 2, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "min_fees" : { "value": 2200.0 } } }
يحسب هذا الجمع مجموع قيمة الحقل المحدد في مستندات الجمع.
POST /schools/_search?size=0 { "aggs": { "total_fees": { "sum": { "field": "fees" } } } } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 8, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "total_fees": { "value": 5700.0 } } }
في بعض الحالات، هناك مقياسات جمع إضافية مثل الجمع الجغرافي والجمع الجغرافي المركزي لتحقيق المواقع الجغرافية.
مقياس جمع متعدد القيم يمكن حساب معلومات الإحصاء بناءً على القيم المستخرجة من مستندات الجمع.
POST /schools/_search?size=0 { "aggs": { "grades_stats": { "stats": { "field": "fees" } } } } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 2, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "grades_stats": { "count": 2, "min": 2200.0, "max": 3500.0, "avg": 2850.0, "sum": 5700.0 } } }
يمكنك إضافة بعض البيانات المتعلقة بالجمع باستخدام علامة meta عند إرسال الطلب، ويمكنك الحصول عليها كرد فعل.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "avg": { "field": "fees" } }, "meta": { "dsc": "Lowest Fees This Year" } } } }
عند تشغيل الشيفرة المذكورة أعلاه، نحصل على النتيجة التالية-
{ "took": 0, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "min_fees" : { "meta" : { "dsc" : "أقل تكاليف هذا العام" }, "value" : 2850.0 } } }