Elasticsearch / المتوسط: النماذج وخطوط معالجة البيانات وأدلة الملاءمة / الدرس 9
خطوط معالجة البيانات عند الإدخال ومسارات الإخفاق
طبّع سجلات المصدر بمعالجات مرتبة، مع الاحتفاظ بأصل البيانات ونتائج الرفض الصريحة.
في هذه الصفحة
أهداف الدرس
- اشرح ترتيب المعالجات وحدود ما تثبته المحاكاة.
- صمم سلوك الحقول الغائبة والتحويل وon_failure.
يغيّر ترتيب التحويل المخرجات
قد يرسل مصدر المتحف status بالقيمة DISPLAYED، وyear على صورة النص 1890. يستطيع خط معالجة البيانات عند الإدخال تطبيع الحالة وتحويل السنة قبل التحقق من التعيين. تعمل المعالجات بالتتابع، لذا يجب أن تسبق إعادة تسمية الحقل التحويل الذي يستخدم اسمه الجديد. لا يحل خط المعالجة محل التعيين أو تحقق المنتج من قواعد الأعمال. فتحويل سنة رقمية صحيحة صياغياً لا يثبت أنها تاريخ اقتناء معقول، كما أن تصغير الحالة لا يثبت أنها ضمن المفردات المعتمدة. احفظ الهوية ومراجعة المصدر بعيداً عن التنظيف الذي قد يحذف الأصل، حتى يمكن تتبع السجلات المرفوضة وإعادة معالجتها.
اجعل الأنبوب صغيراً ومعرّفاً
يعرّف الجسم معالجين بوسمين صريحين. تساعد الأوسمة في ربط الخطأ بتحويل محدد، بدلاً من الاكتفاء بقول إن الإدخال فشل. لا يُتجاهل هنا غياب status أو تعذر تحويل year بصمت؛ بل يبقى سلوك الإخفاق الافتراضي ظاهراً. احفظ تعريف خط المعالجة مع مواد التطبيق الخاضعة لإدارة الإصدارات، وحدد المنتج أو القالب الذي يختاره. يؤثر تعديل الخط في موضعه في المعالجة المستقبلية، لا في المستندات التاريخية المفهرسة. وعندما يعتمد تفسير مجموعة المقتنيات لاحقاً على هذه التحويلات، يجب تسجيل إصدار التحويل لضمان إعادة إنتاجها.
{"version":1,"processors":[{"lowercase":{"field":"status","tag":"normalize_status"}},{"convert":{"field":"year","type":"integer","tag":"parse_year"}}]}
هذا جسم توضيحي لخط معالجة بيانات مسمى. ويجعل عقد التحويل المعروض كلا الحقلين مطلوباً.
تتحقق المحاكاة من مسار لا النشر كله
يتضمن جسم المحاكاة المضمن التحويلين نفسيهما ومصدراً اصطناعياً. في مختبر مستقل مصرح به، يُظهر POST /_ingest/pipeline/_simulate الحالة displayed والسنة الرقمية 1890. لكنه لا يثبت أن المنتج الفعلي يختار هذا الخط، أو أن تعيين الوجهة يقبل كل حقل بعد تحويله، أو أن كل عناصر استجابة Bulk ناجحة. أدرج في المحاكاة حقولاً غائبة وقيم NULL وسنوات رقمية أصلاً ونصوصاً غير صالحة. تحلل هذه الدورة JSON محلياً فقط، ولا تنفذ محرك خط المعالجة ولا تدعي الحصول على استجابة محاكاة فعلية.
{"pipeline":{"processors":[{"lowercase":{"field":"status"}},{"convert":{"field":"year","type":"integer"}}]},"docs":[{"_source":{"artifact_id":"art-101","status":"DISPLAYED","year":"1890"}}]}
الحقول المتوقعة بعد التحويل هي status="displayed" وyear=1890. يستند هذا التوقع إلى سلوك المعالجين الموثق، وليس إلى استجابة محرك ملتقطة.
علامة الخطأ لا ترفض البيانات تلقائياً
يمكن لـignore_failure متابعة المعالجة بعد فشل أحد المعالجات، ويمكن لـon_failure تشغيل خطوات محددة للتعامل مع الإخفاق. وقد تسمح إضافة ingest_error فقط داخل المعالج الاستثنائي بفهرسة سجل معيب رغم وجود العلامة. إذا اشترطت السياسة العزل أو الرفض، فصمم هذه النتيجة صراحة وتحقق من وجهتها ومحاسبة سجلاتها. احتفظ بقيمة الحقل الأصلية عندما يحتاجها الإصلاح المعتمد، ولا تسجل الحمولات الحساسة افتراضياً. يجب أن يميز مسار الإخفاق بين حقل اختياري يمكن تحمّل غيابه وحقيقة أعمال إلزامية؛ فمعاملتهما بالطريقة نفسها قد تحوّل إخفاقاً واضحاً إلى عيب جودة صامت.
تشارك المعالجة ميزانية الموارد
تستهلك عمليات التحليل المكلفة أو الإثراء أو السكربتات موارد الإدخال قبل اكتمال الفهرسة. وقد تؤدي زيادة طلبات Bulk المتزامنة إلى زيادة الانتظار والرفض بدلاً من الإنتاجية. قِس حمولات ومسارات معالجة ممثلة في مختبر مصرح به، بما فيها الإخفاقات التي تشغّل معالجة استثنائية. ويحتاج الإثراء أيضاً إلى عملية محددة لتحديث البيانات المرجعية وسياسة للمفاتيح التي لا تطابق. فقد تكون نتيجة إثراء ناجحة لكنها أقدم من النظام المصدر. اجمع تغييرات الخط وإصدارات المرجع وعدد المرفوضات وحداثة المسار الكامل في المراجعة التشغيلية. ولا تثبّت معالجات أو تنشئ عقداً أو تغير عنقوداً مهيأ لمجرد اختبار هذا المثال التحريري.
الأخطاء الشائعة وإصلاحها
يبلغ أحد المعالجات عن حقل مفقود
- لماذا يحدث؟
- حذف المصدر حقلاً مطلوباً، أو غيّرت إعادة تسمية سابقة مساره.
- كيف تصلحه؟
- افحص ترتيب المعالجات وحالة المصدر الدقيقة عند تلك الخطوة.
- كيف تتجنب تكراره؟
- اختبر الحقول الاختيارية والإلزامية كلّاً على حدة.
ينتج التحويل الفاشل سجلاً مفهرساً رغم ذلك
- لماذا يحدث؟
- سمح مسار on_failure أو سياسة التجاهل باستمرار المعالجة.
- كيف تصلحه؟
- حدّد الرفض أو العزل صراحة، وطابق مخرجاتهما.
- كيف تتجنب تكراره؟
- راجع مسارات الإخفاق بالعناية نفسها التي تراجع بها التحويلات الناجحة.
تحتفظ المستندات التاريخية بالتطبيع القديم
- لماذا يحدث؟
- ينطبق تعديل خط المعالجة على المعالجة اللاحقة، لا على المحتوى المفهرس القائم.
- كيف تصلحه؟
- خطط لإعادة بناء ذات إصدار إذا كان الاتساق التاريخي مطلوباً.
- كيف تتجنب تكراره؟
- سجّل إصدارات التحويل وفحوص قبول إعادة البناء.
اختبر فهمك
1. هل تثبت محاكاة مضمنة ناجحة أن المنتج يستخدم خط معالجة البيانات المقصود؟
اعرض الحل المشروح
لا. إذا شغّل المحرك المحاكاة فعلياً، فهي تثبت مسار المعالجات المحاكى للمستندات المقدمة فقط. تحقق بصورة مستقلة من معلمات المنتج واختيار الخط الافتراضي أو النهائي وتعيين الوجهة ونتائج عناصر Bulk. هنا يُجرى تحليل JSON محلي فقط، ولا يُدعى تنفيذ محاكاة على المحرك.
2. لماذا قد لا تكفي إضافة ingest_error لتطبيق سياسة السجلات المرفوضة؟
اعرض الحل المشروح
قد يواصل المستند طريقه إلى الفهرس العادي مع علامة الخطأ. حدد هل يجعل المسار الطلب يفشل، أم يوجه السجل إلى مجموعة عزل مضبوطة، وتحقق من مجموع المقبول والمرفوض. اجعل ملكية الإصلاح وإعادة المعالجة صريحة حتى لا تصبح مجموعة الأخطاء مخزناً دائماً لا يفحصه أحد.
أهم ما تعلمته
- تحدد التحويلات المرتبة وسياسات الإخفاق معاً عقد الإدخال.
- المحاكاة واختيار المنتج للخط وقبول الوجهة براهين مستقلة.