انتقل إلى المحتوى الرئيسي

Elasticsearch وKibana وNeo4j: البحث والرسوم البيانيّة في الممارسة

فهرسة 200 853 مقالًا صحفيًّا في ثلاثين ثانية، واسترجاعها بالملاءمة رغم الأخطاء الإملائيّة، وتحليلها في Kibana، وربط المؤلّفين بالمواضيع في رسم Neo4j بيانيّ، ثمّ التّوصية بما يُقرأ لاحقًا: هذه الدّورة تبني محرّك بحث وتوصية كاملًا، من أوّل GET / حتّى سكربت Python يجمع بين المحرّكَين. كلّ شيء يعمل داخل حقيبة Docker واحدة، مسلَّمة مع الدّورة ومختبَرة من طرف إلى طرف، حتّى تذهب الطّاقة إلى التّعلّم لا إلى استكشاف الأخطاء.

مدّة الدّورة: 10 ساعات

ما ستتعلّمه

  • فهم لماذا لا يُشكّل LIKE '%mot%' محرّك بحث، وما الذي يُغيّره index inversé.
  • قراءة cluster Elasticsearch وقيادته: العُقَد، والفهارس، وshards، وreplicas، والصحّة، والذّاكرة والقرص.
  • فهرسة المستندات وتعديلها وحذفها، ثمّ تحميل مجموعة نصوص كاملة عبر واجهة _bulk.
  • تصميم mapping متين: text مقابل keyword، والتّواريخ، والحقول المتعدّدة، والمحلّلات وإعادة الفهرسة.
  • كتابة استعلامات Query DSL دقيقة: match، multi_match، bool، والمرشّحات، والفرز، والصّفحات، والإبراز، وقراءة السّكور.
  • الإجابة عن الأسئلة العمليّة بـagrégations: الفئات، والاتّجاهات شهرًا بشهر، والمؤلّفون الأكثر نشاطًا.
  • إنشاء Data View داخل Kibana وعمليّات بحث KQL وتصويرات Lens ولوحة قابلة للمشاركة.
  • إضافة الإكمال التّلقائيّ، والتّسامح مع الأخطاء، واستعلام الكوربوس بـES|QL.
  • المقارنة بين Elasticsearch وOpenSearch على الاستعلامات ذاتها والاختيار عن دراية.
  • نمذجة رسم بيانيّ وتحميله بـLOAD CSV، ووضع القيود والفهارس، ثمّ كتابة Cypher متقدّم: المسارات وagrégations والتّوصية.
  • قيادة كلا المحرّكَين من Python بواسطة العملاء الرّسميّين، دون تثبيت أيّ شيء على جهازك.
  • التّأمين، والنّسخ الاحتياطيّ، والمراقبة، ثمّ التّشخيص الذّاتيّ للاثني عشر عطلًا الكلاسيكيّة.

المتطلّبات المسبقة

  • الارتياح في الطّرفيّة (Windows PowerShell أو macOS أو Linux).
  • معرفة أساسيّات SQL (SELECT، WHERE، JOIN) والقدرة على قراءة JSON.
  • Docker Desktop مثبَّت، مع 4 غيغابايت ذاكرة مخصَّصة على الأقلّ (6 غيغابايت موصى بها). تتحقّق الوحدة 1 من كلّ شيء بأمر واحد وتُبيّن ما يجب تصحيحه.
  • لا حاجة إلى تثبيت Python أو curl أو jq: كلّ شيء متوفّر في الحقيبة.

وحدات الدّورة

  1. لماذا محرّك بحث وقاعدة رسوم بيانيّة؟ تثبيت حقيبة Veille
  2. المفاهيم الأساسيّة لـElasticsearch: cluster وnœud وindex وshard وdocument
  3. المستندات: CRUD والإصدارات والاستيراد الضّخم بـ_bulk
  4. Mapping وtext مقابل keyword والمحلّلات
  5. البحث: Query DSL وbool والمرشّحات والملاءمة
  6. Agrégations: الإحصاء والتّجميع والمتابعة عبر الزّمن
  7. Kibana: Data View وDiscover وKQL وLens واللّوحات
  8. الإكمال التّلقائيّ والتّسامح مع الأخطاء وES|QL والبحث المتقدّم
  9. OpenSearch وOpenSearch Dashboards: المقارنة والاختيار والهجرة
  10. قواعد الرّسوم البيانيّة وNeo4j والخطوات الأولى في Cypher
  11. نمذجة رسم بيانيّ وتحميله: القيود والفهارس وLOAD CSV
  12. Cypher المتقدّم: المسارات وagrégations والتّوصية
  13. قيادة Elasticsearch وNeo4j من Python
  14. الأمن، والمستخدمون، والنّسخ الاحتياطيّ، والتّشغيل اليوميّ
  15. التّشخيص: الأعطال الاثنا عشر الكلاسيكيّة وحلولها
  16. المشروع: محرّك Veille الكامل بالبحث والتّوصية

الخيط الأحمر

Veille، شركة ناشئة صغيرة من مونتريال متخصّصة في الرّصد الإعلاميّ، ترافق الوحدات السّتّ عشرة. عملاؤها يبحثون في مئات الآلاف من المقالات، ويتابعون المواضيع عبر الزّمن، ويريدون أن يُوصى إليهم بما يُقرأ لاحقًا. تنضمّ إلى الفريق مع Sami، مهندس بيانات مُعيَّن حديثًا، تحت إشراف Inès، قائدة البيانات؛ Léa تبني اللّوحات للعملاء وKarim يربط الـAPI بالمحرّكَين. الكوربوس حقيقيّ: 200 853 عنوانًا من HuffPost مصنَّفًا في 41 فئة بين عامَي 2012 و2018. وحدة بعد وحدة، تتعلّم Veille استرجاع مقال وتحليله وربط مؤلّفيه ومواضيعه ثمّ التّوصية؛ وتجمع الوحدة 16 كلّ ذلك في محرّك واحد تستطيع عرضه في خمس دقائق.

حقيبة Veille: صفر تثبيت، صفر استكشاف أخطاء

تُسلَّم الدّورة مع مجلّد للتّحميل (حقيبة Veille، أرشيف zip بحجم 30 كيلوبايت) يحتوي ملفّ docker-compose.yml وحيدًا وسكربتَين: lab.sh لـmacOS وLinux وWSL2، وlab.ps1 لـWindows PowerShell. ثلاثة أوامر تكفي: doctor يتحقّق من Docker والذّاكرة والمنافذ ويقول بالضّبط ما يجب تصحيحه؛ up يُشغّل Elasticsearch 9.5 وKibana وNeo4j 5.26 وينتظر أن تصير جاهزة فعلًا؛ import-news يُحمّل الكوربوس ويُجهّز الملفّ لـNeo4j. كلمة سرّ Kibana تُضبَط لوحدها، APOC يُثبَّت لوحده، وبيئة Python مع العملاء الرّسميّين تعمل في container، وOpenSearch ينطلق جانبيًّا عند الحاجة، وreset يُعيد كلّ شيء إلى حالة جديدة في عشر ثوانٍ. تنتهي كلّ وحدة بقسم « إذا لم يعمل شيء » وتجعلك الوحدة 15 تُعيد إنتاج الأعطال الاثني عشر الكلاسيكيّة ثمّ تُصلحها.

لماذا هذه الدّورة مختلفة

الإصدارات هي إصدارات اليوم: Elastic Stack 9.5، Neo4j 5.26 LTS، OpenSearch 3.8، مع الجديد المُهمّ (ES|QL، CALL { } IN TRANSACTIONS، الأمن مفعَّل افتراضيًّا). كلّ استعلام في الدّورة نُفِّذ على الكوربوس ونتيجته مذكورة، حتّى تعرف في كلّ خطوة إن كنت قد نجحت. لا تتعلّم واجهات API نظريًّا: أنت تُسلّم منتجًا.

التّقييم والشّهادة

يُختَم المسار باختبار من 40 سؤالًا يُغطّي الوحدات السّتّ عشرة. عند النّجاح تُمنح شهادة الإتمام فورًا، ورقمها قابل للتّحقّق على المنصّة.

أمّا الدّورات المجّانيّة، فتُختَم باختبار من 5 أسئلة مع معاينة الشّهادة، دون منح شهادة رسميّة.