Skip to content Skip to footer

Elasticsearch التعريف بها وطريقة عملها واستخدامها

Elasticsearch

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

ما هو Elasticsearch؟

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

ما هي آلية عمل Elasticsearch؟

كي نستطيع فهم كيفية عمل Elasticsearch، لابدّ من شرح المفاهيم الأساسية لتنظيم البيانات وكيف يعمل Elasticsearch؟
لفهم كيفية عمل Elasticsearch بشكل أفضل، دعنا نغطي بعض المفاهيم الأساسية لكيفية تنظيم البيانات ومكونات الواجهة الخلفية لها.

مفاهيم منطقية (Logical Concepts):

المستندات (Documents)

تعتبر المستندات هي الوحدة الأساسية للمعلومات التي يمكن فهرستها في Elasticsearch المعبّر عنها في JSON، وهو عبارة عن تنسيق عالمي يستخدم لتبادل بيانات الانترنت.
حيث يمكنك تصوّر المستند وكأنّه عبارة عن صف في قاعدة بيانات علائقية، وهو يمثل كياناً معيّناً ولنفترض أنّه الشيء الذي تبحث عنه.
وليس بالضرورة في Elasticsearch أن يكون المستند نص فقط ممكن أن يكون أكثر من نص، كأن يكون بيانات منظّمة ومشفّرة في JSON، وهذه البيانات قد تكون (أرقام-سلاسل-تواريخ…).
يحتوي كل مستند على معرّف فريد ونوع بيانات معيّن، وهو الذي يصف نوع الكيان الذي يمثّله المستند، مثلاً ممكن أن يمثّل هذا المستند (مقالة-موسوعة-إدخالات سجلات من خادم الويب..).

الفهارس (Indices)

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

الفهرس المقلوب (Inverted Index)

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

Inverted Index
تمثيل مرئي لمؤشر مقلوب

مكونات الواجهة الخلفية (Backend Components)

الكتلة (Cluster)

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

العقدة (Node)

تعتبر العقدة عبارة عن جزء من كتلة وهي خادم واحد، حيث تخزّن العقدة البيانات وتساهم في فهرسة العنقود وتسهيل إمكانيات البحث ويتم تكوين عقدة معيّنة في Elasticsearch بطرق عديدة:
– العقدة الرئيسية (Master Node): وهي العقدة التي تختصّ بالتحكّم، حيث تتحكّم بمجموعة Elasticsearch، حيث تكون مسؤولة عن جميع البيانات من (إنشاء-حذف-فهرسة-إضافة-إزالة) العقد.
– عقدة البيانات (Data Node): وهي العقدة التي تختصّ بالتخزين، حيث تخزّن البيانات وتقوم بتنفيذ العمليات التي تتعلّق بالبيانات مثل البحث وتجميع البيانات.
– عقدة العميل (Client Node): وهي العقدة التي تختصّ بالتوجيه وتوزيع المهام، حيث تعيد هذه العقدة توجيه طلبات الكتلة إلى العقدة الرئيسية Master Node، والطلبات المتعلّقة بالبيانات إلى عقدة البيانات Data Node.

الأجزاء (Shards)

يمنح Elasticsearch المجال والقدرة لتقسيم الفهرس إلى أجزاء متعددة، ويعتبر كلّ جزء في حدّ ذاته (فهرس) متكامل الوظائف ومستقل حيث يمكن استضافته على أي عقدة داخل أي مجموعة.
يمكن ل Elasticsearch ضمان التكرار الذي يحمي من أعطال الأجهزة ويزيد من سعة الاستعلام من خلال توزيع المستندات في فهرس عبر أجزاء متعددة، وتوزيع تلك الأجزاء عبر عقد متعددة، حيث تتم إضافة تلك العقد إلى مجموعة ما.

النسخ المتماثلة (Replicas)

يسمح Elasticsearch بعمل نسخة واحدة أو أكثر من نسخة من أجزاء الفهرس والتي يطلق عليها (نسخ متماثلة Replicas)، وتعدّ النسخ المتماثلة نسخة من جزء أساسي.
حيث أنّ كل مستند في الفهرس ينتمي إلى جزء أساسي واحد.
تقوم النسخ المتماثلة بتوفير نسخ متكررة من بياناتك كي تقوم بحمايتها من احتمالية فشل الأجهزة وزيادة السعة لخدمة طلبات القراءة مثل البحث عن مستند ما أو استرداده.

المكدس المرن (ELK)

يعتبر Elasticsearch المكوّن المركزي والرئيسي ل Elastic Stack، وهي عبارة عن مجموعة أدوات مفتوحة المصدر تستخدم لاستيعاب وإثراء وتخزين وتحليل وتصور البيانات.
يطلق عليه عادة اسم “ELK”، وهو اختصار ل Elasticsearch وLogstash وKibana، ويتضمن الآن أيضًا Beats. على الرغم من وجود محرك بحث في جوهره، بدأ المستخدمون في استخدام Elasticsearch لبيانات السجل وأرادوا طريقة لاستيعاب هذه البيانات وتصورها بسهولة.

كيبانا (Kibana)

وهي أداة لتصوّر البيانات وإدارتها ل Elasticsearch حيث توفّر الرسوم البيانية الخطّية والمخططات الدائرية والخرائط.
يقدم لك تصور بيانات Elasticsearch التنقل في Elastic Stack حيث يمكنك تحديد الطريقة التي تعطي شكل بياناتك بالبدء بسؤوال واحد لتعرف أين سيقودك التصور التفاعلي.
مثلاً: بسبب استخدام Kibana لتحليل السجل ستراه يسمح لك بالإجابة حول مصدر زيارات الويب وعناوين URL وتوزيعها وما يتصل بذلك.
إذا كنت لا تقوم ببناء تطبيقك الخاص فوق Elasticsearch، فإنّ Kibana تعتبر طريقة رائعة للبحث وتصوّر الفهرس الخاص بك باستخدام واجهة مستخدم قوية ومرنة.
ولكن المشكلة هي أنّ مقابل كل تصوّر يمكن أن يعمل فقط ضد نمط فهرس/مؤشّر واحد، لذلك في حال كان لديك مؤشرات ببيانات مختلفة تماماً، سيتعيّن عليك إنشاء تصوّرات منفصلة لكلّ منها.

لوغستاش (Logstash)

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

Beats

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

ما هي حالات استخدام Elasticsearch؟

بعد أن قمنا بتوضيح بنية Elasticsearch والمفاهيم الأساسية التي تتصل به، باتت لدينا صورة واضحة لاستخدامات Elasticsearch.
وهذه أهمّ الأمثلة على كيفية استخدام الشركات ل Elasticsearch اليوم:

حالات الاستخدام الأولية:

  1.  Application search: في مجال بحث التطبيقات التي تعتمد بشكل كبير على منصّة للوصول إلى البيانات واسترجاعها وإعداد تقارير عنها.
  2.  Website search: تعتبر Elasticsearch خياراً أمثلاً لمواقع الويب التي تخزّن قدراً كبيراً من المحتوى وتعتبر أداة فعالة لإجراء عمليات بحث فعّالة ودقيقة.
  3.  Enterprise search: يضمن Elasticsearch، البحث على مستوى المؤسسة والذي يتضمّن البحث في المستندات ومنتجات التجارة الالكترونية والمدونات والبحث عن الأشخاص، وأي شكل قد يخطر ببالك من أشكال البحث، يتم استخدام Elasticsearch لتحقيق نجاح كبير في شبكات الشركة الداخلية.
  4.  Logging and log analytics: حيث يتم استخدام Elasticsearch بشكل شائع لاستيعاب بيانات السجل وتحليلها في الوقت ذاته بطريقة قابلة للتطوير، كما يقوم بتوفير رؤى تشغيلية مهمة حول مقاييس السجل لدفع الإجراءات.
  5.  Infrastructure metrics and container monitoring: حيث تستخدم العديد من الشركات حزمة ELK لتحليل المقاييس المختلفة، بما يتضمّن جمع البيانات عبر العديد من معلمات الأداء التي تختلف حسب حالة الاستخدام.
  6.  Security analytics: حيث يمكن تحليل سجلات الوصول والسجلات المماثلة المتعلّقة بأمان النظام عن طريق استخدام ELK stack، مما يساهم بتوفير صورة أكثر اكتمالاً لما يحدث في أنظمتك في الوقت الحالي.
  7.  Business analytics: تعتبر الميزات المتواجدة في ELK Stack عاملاً تجعل منه خياراً جيداً كأداة لتحليل الأعمال، وهذا يعتبر خياراً أمثلاً خاصة في الشركات التي يتوفر فيها مصادر بيانات متعددة.

حالات ناجحة لاستخدام Elasticsearch:

• Netflix
تعتمد Netflix على ELK Stack عبر حالات استخدام مختلفة يتم من خلالها مراقبة وتحليل عمليات خدمة العملاء وسجلات الأمان الخاصة بهم.
مثلاً: Elasticsearch هو المحرّك الرئيسي لنظام المراسلة الخاص بهم.
وقد زادت Netflix بشكل مطرد من استخدام Elasticsearch، لعدد قليل من عمليات النشر المعزولة إلى أكثر من اثنتي عشرة مجموعة تتكون من مئات العقد.
• Ebay:
حيث يعتبر Elasticsearch العمود الفقري ل Ebay من خلال عدد لا يحصى من البحث عن النصوص المهمة وتحليلها، وقد أنشأت eBay منصة مخصصة “Elasticsearch-as-a-Service” للسماح بتوفير مجموعة Elasticsearch سهلة على النظام الأساسي السحابي الداخلي القائم على OpenStack.
Walmart:
حيث تستخدم Walmart Elastic Stack للكشف عن الإمكانات الخفيّة لبياناتها، للإحاطة بالرؤى اللازمة حول أنماط شراء العملاء وتتبع أداء المتجر وتحليل الإجازات كل ذلك في نفس الوقت.
كما أنه يستفيد من ميزات أمان ELK للأمان باستخدام SSO، والتنبيه لاكتشاف العيوب، ومراقبة DevOps.
وفي النهاية لابدّ أن نشير إلى أنّنا قدمنا لكم التعريف عن ماهيّة Elasticsearch، واستخداماته، وهو بإيجاز عبارة عن محرك بحث، بهندسة ومكونات سريعة جداً وقابلة للتطوير، متضمّناً أدوات تكميلية يمكن استخدامها للعديد من حالات الاستخدام البحث والتحليل ومعالجة البيانات وتخزينها.
وبإمكانكم اعتماد Elasticsearch عبر التعاون مع فريق خوارزمية الذي يقدّم لكم أفضل الحلول البرمجية وأفضل الخدمات بطريقة ترضيكم وتناسب أهدافكم وأعمالكم.

Leave a comment