محتويات الدورة

Elasticsearch / المتوسط: النماذج وخطوط معالجة البيانات وأدلة الملاءمة / الدرس 7

التجميعات والحاويات والدقة

ابنِ جوانب وملخصات للمقتنيات، مع الحفاظ على مجتمع الحساب ووحدات العد وحدود التقريب.

وقت القراءة التقريبي: 5 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • ميّز التجميعات القياسية وتجميعات الحاويات والحسابات المبنية على مخرجات تجميعات أخرى.
  • افهم أخطاء أعداد أهم المصطلحات، واختر اجتيازاً كاملاً للحاويات عند الحاجة.

يلخّص التجميع مجتمعاً مختاراً

ينبغي لجانب المواد الخاص بالقطع المعروضة أن يجمع مجتمع البحث المؤهل نفسه، إلا إذا عرّف المنتج عمداً تنقلاً أوسع. يقيّد query مدخلات التجميع عادة، بينما يستطيع post_filter تصفية المستندات المعادة من دون تطبيق القيد نفسه على التجميعات. يفيد هذا الفرق بعض واجهات البحث بالجوانب، لكنه قد يسبب أعداداً تبدو متناقضة إذا أُدخل عرضياً. اكتب وحدة العد صراحة: المستندات، والقطع المميزة، وسجلات الحفظ المتداخلة، والقيم ليست وحدات متبادلة. وقد يضع حقل material متعدد القيم مستنداً واحداً في أكثر من حاوية؛ لذلك لا يلزم أن يساوي مجموع أعداد الحاويات العدد الإجمالي للنتائج.

استخدم حقلاً دقيقاً للفئات

لا يطلب جسم البحث نتائج مستندات عادية، بل يجمع المستندات المعروضة حسب material من نوع keyword. ويحسب تجميع فرعي متوسط age_years للقيم الرقمية المعلومة داخل كل حاوية. لا تدخل القيم الغائبة تلقائياً بوصفها أصفاراً في ذلك المتوسط. لو استُخدمت مصطلحات حقل text المحلل، لأُنشئت مفردات مختلفة؛ كما أن تمكين fielddata لحقل نصي كبير قد يستهلك ذاكرة كبيرة. فضّل تمثيل keyword المقصود. وتعني size: 5 طلب أهم الحاويات، لا الوعد بجرد مواد شامل. هذا المثال تعريف استعلام فقط؛ ولا يتضمن أعداداً موزعة مختلقة أو أزمنة مقاسة.

json مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
{"size":0,"query":{"term":{"status":"displayed"}},"aggs":{"materials":{"terms":{"field":"material","size":5,"show_term_doc_count_error":true},"aggs":{"mean_age":{"avg":{"field":"age_years"}}}}}}

يحتاج material الفئوي إلى تعيين keyword، ويحتاج age_years إلى نوع رقمي. ولا يسهم العمر الغائب في مقام حساب المتوسط.

تُختار أهم المصطلحات عبر الأجزاء

يجمع terms مرشحين من الأجزاء ثم يدمجهم. وقد تكون مساهمة مصطلح مهم عالمياً ناقصة إذا لم يدخل مجموعة المرشحين في بعض الأجزاء. توضح doc_count_error_upper_bound وsum_other_doc_count جوانب من هذا القيد وفق دلالات ترتيب مدعومة. قد تحسن زيادة shard_size تغطية المرشحين، لكنها تستهلك ذاكرة وعملاً عبر الشبكة، وقد يغير اختيار ترتيب آخر ضمانات الخطأ المنطبقة. لا تحذف بيانات الخطأ من تقرير يدعي دقة الأعداد. وإذا كان الغرض تدقيقاً، فاختر استراتيجية كاملة مناسبة وطابق البيانات المعتمدة، بدلاً من التعامل مع جانب يعرض أهم خمس مواد كأنه محاسبة مالية.

للاجتياز المركب متابعة خاصة

يمكن للتجميع المركب composite تقسيم اجتياز مفاتيح الحاويات إلى صفحات ذات ترتيب محدد. استخدم after_key المعاد للطلب التالي، ولا تفترض أنه يساوي دائماً آخر مفتاح حاوية معروض. أبقِ sources والاستعلام وتوقعات الاتساق ثابتة. يبدأ الجسم أدناه اجتيازاً لمفاتيح المواد؛ ولا يمثل متابعة لاستجابة أهم المصطلحات. وقد يغير فهرس نشط مجتمعات الحاويات بين الطلبات، فحدد هل يحتاج التطبيق إلى صورة متسقة. يحد حجم الصفحة مقدار استجابة واحدة، لكن الاجتياز الكامل لمفاتيح كثيرة يظل ذا تكلفة كلية في الموارد والزمن.

json مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
{"size":0,"aggs":{"materials":{"composite":{"size":20,"sources":[{"material":{"terms":{"field":"material"}}}]}}}}

يبدأ هذا الجسم اجتيازاً مرتباً للحاويات. ويستخدم جسم لاحق after_key المعاد تحت composite.after، مع الحفاظ على المصادر نفسها.

تحتاج حاويات التقويم وأعداد القيم المميزة إلى تسميات واضحة

يتبع calendar_interval في مدرج التاريخ حدود التقويم، بينما يعبر fixed_interval عن مدة ثابتة. لذلك قد تغير المناطق الزمنية وانتقالات التوقيت الصيفي عرض الحاويات أو عضوية القيم فيها. سمِّ منطقة العمل، ووضح هل تُدرج الفترات الخالية. وcardinality أداة تقريب لعدد القيم المميزة، لها مقايضة بين الدقة والذاكرة، وليست COUNT DISTINCT دقيقة تصلح لكل غرض. أما تجميعات pipeline فتحسب من مخرجات تجميعات أخرى، وترث حدود مجتمعها وتقريبها. تحقق من مثال صغير يحتوي قيماً غائبة وفئات متعددة القيم وطوابع زمنية حدية قبل الوثوق بمجاميع لوحة العرض ونسبها.

الأخطاء الشائعة وإصلاحها

لا تطابق أعداد الجوانب النتائج المرئية

لماذا يحدث؟
غيّر post_filter أو تعدد قيم الحقول المجتمع الذي يُعد أو وحدة العد.
كيف تصلحه؟
وثق مجتمع الجوانب المقصود، وقارن مدخلات كل مرحلة.
كيف تتجنب تكراره؟
اختبر مستنداً واحداً متعدد المواد، ومستنداً بحالة مستبعدة.

تُعرض أهم الحاويات كأنها جرد كامل

لماذا يحدث؟
تُجاهلت حدود terms.size واختيار المرشحين الموزع.
كيف تصلحه؟
احتفظ ببيانات الخطأ، أو استخدم استراتيجية اجتياز كامل مناسبة.
كيف تتجنب تكراره؟
ميّز أعداد التنقل عن تقارير الأعداد الدقيقة الخاضعة للتدقيق.

too_many_buckets_exception

لماذا يحدث؟
يتجاوز هيكل الحاويات المطلوب حد الموارد المسموح.
كيف تصلحه؟
خفّض الاتساع والتداخل، أو قسّم اجتياز composite مبرراً إلى صفحات.
كيف تتجنب تكراره؟
ضع ميزانية لتقارير المفاتيح الكثيرة قبل إتاحة ضوابط تجميع اعتباطية.

اختبر فهمك

1. هل يمكن أن يزيد مجموع أعداد حاويات المواد على عدد القطع؟

اعرض الحل المشروح

نعم. إذا كانت للقطعة عدة قيم material مفهرسة، فقد تنتمي إلى حاويات متعددة. حدد هل يعد الرسم المستندات داخل كل فئة، أم يسند لكل قطعة فئة مادة أساسية واحدة. لا تعالج الفرق بقسمة الأعداد من دون تعريف تجاري لما تعنيه النتيجة.

2. ما القيمة التي ينبغي استخدامها لمتابعة تجميع composite؟

اعرض الحل المشروح

استخدم after_key المعاد، مع الإبقاء على مصادر composite والاستعلام نفسيهما. لا تشتقه من تسميات العرض، ولا تفترض أن آخر حاوية تعادله دائماً. تتبع اتساق الاجتياز وميزانيته الكلية بصورة مستقلة عن حجم الصفحة.

أهم ما تعلمته

  • تحتاج أعداد الحاويات إلى وحدة ومجتمع معلنين.
  • بيانات التقريب والمتابعة الوصفية جزء من النتيجة.

المراجع الرسمية