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

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

الكتابة التفاؤلية والأسماء البديلة وإعادة الفهرسة

امنع فقد التعديلات، ورحّل فهرس بحث مشتقاً من دون الخلط بين ذرية تحويل الاسم البديل واكتمال مزامنة البيانات.

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

أهداف الدرس

  • اشرح شروط رقم التسلسل والفترة الأساسية السابقة للكتابة.
  • خطط لاستبدال فهرس وتحويل اسم بديل بعد مطابقة البيانات.

قد تكتب قراءة وتعديل فوق محرر آخر

يقرأ قيّمان القطعة نفسها، ويعدل كل منهما حقولاً مختلفة محلياً، ثم يرسل كل واحد مستند استبدال. من دون ضبط التزامن، قد يمحو الاستبدال اللاحق تعديل الأول. يعرض Elasticsearch الحقلين _seq_no و_primary_term، حتى تشترط الكتابة حالة الإصدار التي رآها القارئ. يجب أن يحتفظ التطبيق بالشرطين ويحدد سلوك التعارض. والتعارض دليل مفيد على قدم التعديل، لا مبرر لإعادة إرسال الاستبدال نفسه بلا نهاية. قرر هل يعيد المستخدم التحميل، أم يدمج حقولاً خضعت للمراجعة، أم يلغي العملية. وقد يكون تمثيل البحث نفسه للقراءة فقط إذا كان نظام السجل المعتمد يملك التعديلات.

طبّق الحالة المرصودة على الهدف نفسه

يمثل الجسم أدناه استبدال قطعة لطلب افتراضي يحمل if_seq_no=12 وif_primary_term=3 في معلمات الاستعلام. القيمتان ملاحظتان اصطناعيتان، وليستا زوجاً صحيحاً عاماً. يجب أن يقبل الخادم الكتابة فقط إذا ظل المستند المستهدف يحقق الشرطين، وإلا أعاد تعارض إصدار. لا يحل التحديث الجزئي تلقائياً كل مشكلة في فقد مقصد الأعمال، خصوصاً إذا زادت سكربتات عدادات أو اعتمدت على قرارات تطبيق قديمة. احتفظ باسم الفهرس والمعرّف الدقيقين مع الحالة المرصودة، حتى لا يعيد الترحيل توجيه رمز الحالة بصمت إلى تاريخ مستند آخر.

json مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
{"artifact_id":"art-101","title":"Restored bronze compass","status":"displayed"}

هذا جسم الاستبدال فقط. توضع الشروط السابقة في معلمات الطلب، ويجب أخذها من استجابة القراءة الفعلية المصرح بها.

إعادة الفهرسة مرحلة في الترحيل

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

لا يثبت تحديث الاسم الذري تطابق البيانات

يزيل جسم إجراءات الاسم البديل museum-search من v1 ويضيفه إلى v2 في طلب aliases واحد. يكون تحويل بيانات الاسم الوصفية ذرياً، لكن قد يرى القراء بيانات ناقصة دلالياً إذا لم تُطابق v2. ويحتاج اسم الكتابة البديل إلى هدف صريح غير ملتبس. كما تحتاج شروط الأسماء البديلة وتوجيهها إلى مراجعة دلالاتها. احفظ خطة تراجع متوافقة تشمل مصير الكتابات المقبولة بعد التحويل. فالرجوع إلى فهرس قديم قد يفقد تلك التغييرات، حتى إذا نجح أمر الاسم البديل نفسه.

json مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
{"actions":[{"remove":{"index":"museum-artifacts-v1","alias":"museum-search"}},{"add":{"index":"museum-artifacts-v2","alias":"museum-search"}}]}

هذا جسم توضيحي لـPOST /_aliases بعد مطابقة مستقلة. لم يُنفذ، ولا ينشئ v2 ولا يملؤه بالبيانات.

تحقق من الكتّاب والقراء عبر الحد

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

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

version_conflict_engine_exception

لماذا يحدث؟
لم تعد شروط الكتابة السابقة تطابق حالة المستند.
كيف تصلحه؟
أعد التحميل وحل تعديل الأعمال بدلاً من تكرار الاستبدال من دون مراجعة.
كيف تتجنب تكراره؟
مرر رقم التسلسل والفترة الأساسية عبر مسارات التحرير.

يفتقد الفهرس الجديد تعديلات أُجريت أثناء النسخ

لماذا يحدث؟
عوملت نسخة لمرة واحدة كأنها مزامنة مستمرة.
كيف تصلحه؟
أعد معالجة تغييرات المصدر أو طابقها وفق بروتوكول الترحيل المراجع.
كيف تتجنب تكراره؟
حدد نقطة تحقق للمصدر وتسليم مسؤولية الكتابة قبل النسخ.

يفقد التراجع عن الاسم البديل تحديثات حديثة

لماذا يحدث؟
لا يحتوي الفهرس القديم الكتابات المقبولة بعد التحويل.
كيف تصلحه؟
طابق تلك الكتابات قبل اختيار وجهة التراجع.
كيف تتجنب تكراره؟
راجع تدفق بيانات التراجع مع إجراء التحويل الأمامي.

اختبر فهمك

1. لماذا يجب أخذ if_seq_no وif_primary_term من القراءة الفعلية، لا من مثال منسوخ؟

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

تحددان تاريخ المستند وفترة القيادة المرصودين. لا تستطيع قيم اعتباطية حماية تعديل المستخدم على النحو الصحيح. احتفظ بهما مع الفهرس والمعرّف، وعامل التعارض بوصفه نتيجة قرار صار قديماً، ولا تعِد استخدامهما بعد إعادة بناء المستند في فهرس مختلف.

2. هل يضمن تحويل الاسم البديل الذري وجود كل تحديث مصدر مقبول في الفهرس الجديد؟

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

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

أهم ما تعلمته

  • تحمي شروط الكتابة التفاؤلية الحالة المرصودة، لا إعادة المحاولة الاعتباطية.
  • يحتاج الترحيل إلى مزامنة البيانات إضافة إلى تحويل ذري للتوجيه.

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