ما هو Elasticsearch؟
Elasticsearch هو محرك بحث وتحليلات موزع ومفتوح المصدر مبني على مكتبة Apache Lucene. يقدم Elasticsearch أيضًا بحثًا باستخدام المتجهات و الاسترجاع المعزز بالتوليد (RAG)، مما يدعم تطبيقات الذكاء الاصطناعي الحديثة بسلاسة. يمكن للتطبيقات تخزين البيانات المهيكلة وغير المهيكلة في Elasticsearch، مع وجود مخطط محدد أو بدونه، عن طريق إرسال حمولات JSON إلى مجموعة Elasticsearch.
معمارية Elasticsearch
من الأساس، فإن المكونات الرئيسية لمجموعة Elasticsearch هي:
وثيقة
الوثيقة هي أصغر سجل للمعلومات المخزنة بواسطة Elasticsearch وتمثل بصيغة JSON. تتكون الوثيقة من عدة حقول (أزواج مفتاح-قيمة) من أنواع مختلفة ويمكن أن تحتوي على مخطط محدد مسبقًا أو تكون بدون مخطط، حيث تستنتج أنواع البيانات لأي حقول جديدة يتم فهرستها.
فهرس
الفهرس هو مجموعة منطقية من الوثائق التي تحمل نفس المخطط، يتم التعرف عليها من خلال اسم الفهرس.
شارد
تنقسم فهارس Elasticsearch إلى وحدات قابلة للإدارة تُسمى shards، وهي مجموعة من الوثائق. تعتبر الشارد هي الوحدة الأساسية للبحث ويتم نسخها عبر عدة عقد لتحقيق التكرار وتحمل الأخطاء.
عقدة
يعد العقدة مثيلًا مستقلاً من Elasticsearch وتدير مجموعة من الشظايا التي تنتمي إلى مؤشر أو أكثر. يمكن أن تكون العقد تحمل أدوار مختلفة مثل عقدة البيانات وعقدة الرئيس وعقدة الاستيعاب.
تجمع
عقدة Elasticsearch هي مجموعة من العقد المتصلة. يمكن لجميع العقد في العقدة التعامل مع طلبات من العملاء والتواصل مع بعضها البعض. تمتلك كل عقدة في العقدة مجموعة فرعية من الشظايا التي تنتمي إلى مؤشر.
هندسة الاستعلام
يوضح الرسم التوضيحي للهندسة التي تتبعها طلب البحث:
- المستخدم أو التطبيق يقوم بعملية البحث. يمكن لأي عقدة في العقدة التعامل مع الاستعلام. العقدة التي تتعامل مع الطلب هي العقدة “التنسيقية”.
- تبث العقدة التنسيقية الاستعلام إلى جميع الشظايا المعنية ونسخها.
- تنفذ كل شظية الاستعلام محليًا وتعيد مجموعة خفيفة من النتائج إلى العقدة التنسيقية.
- تدمج العقدة التنسيقية النتائج التي تتلقاها. هذه نهاية مرحلة “الاستعلام”. تحدد مرحلة الاستعلام الوثائق الأساسية التي تشكل نتيجة البحث، ولكن يتعين استعادة الوثيقة بالكامل.
- ترسل العقدة التنسيقية طلبات الاستحضار إلى الشظايا المالكة، التي تثري الوثائق في مجموعة النتائج.
- يتم إرجاع الوثائق المثرية إلى العقدة التنسيقية.
- يتم إرجاع مجموعة النتائج الكاملة للبحث، مصنفة ومثرية، إلى المتصل.
معمارية الفهرسة
يوضح الرسم البياني المعماري التالي تدفق طلب الفهرسة:
- يرسل المستخدم مستند JSON ليقوم Elasticsearch بفهرسته. إذا كان المستند موجودًا بالفعل، تتم إضافة حقول جديدة، ويتم الكتابة فوق الحقول الموجودة. العقدة التي تستقبل الطلب أولاً هي العقدة “المنسقة”.
- تحدد العقدة المنسقة الشظية الأساسية للمستند الوارد، عادةً بناءً على معرف المستند، وتحيل الطلب إلى عقدة البيانات التي تمتلك الشظية الأساسية.
- تتحقق الشظية الأساسية من العملية وتنفذها محليًا.
- ثم تحيل الشظية الأساسية العملية إلى جميع النسخ الاحتياطية الخاصة بها بالتوازي.
- تطبق الشظايا النسخ الاحتياطية العملية محليًا على عقدها.
- تظهر الخطوات 6 و 7 و 8 إقرار الكتابة الذي يتصاعد من الشظية النسخ الاحتياطية إلى الشظية الأساسية، إلى العقدة المنسقة، وإلى المتصل.
الخاتمة
تصف هذه المقالة المكونات المختلفة لعناقيد Elasticsearch: المستندات والفهارس والشظايا والعقد. كما توضح دورة حياة طلب البحث وطلب الفهرسة. تجعل معمارته المرنة من السهل إضافة وإزالة العقد مع توسع العنقود. ويجمع ذلك مع ميزات مثل الفهرسة بدون مخطط ودعم ميزات البحث الذكي، مما يجعل Elasticsearch المعيار الفعلي للمنظمات التي تحتاج إلى تخزين والبحث وتحليل كميات كبيرة من البيانات بكفاءة في الوقت الحقيقي.
Source:
https://dzone.com/articles/elasticsearch-query-and-indexing-architecture