ما هو Elasticsearch؟
Elasticsearch هو محرك بحث وتحليل يتم توفيره بشكل موزع وموزع بشكل كبير، والذي تم بناؤه على رأس مكتبة Apache Lucene للبحث. إنه مصمم للتعامل مع حجم كبير من البيانات المنظمة والنصف منظمة وغير المنظمة، مما يجعله مناسبًا جدًا لمجموعة واسعة من الاستخدامات، بما في ذلك محركات البحث وتحليل السجلات والتجارة الإلكترونية وتحليل الأمان.
Elasticsearch يستخدم هيكل موزع يسمح له بتخزين ومعالجة كميات كبيرة من البيانات عبر عقد متعددة في مجموعة. البيانات مفهرسة ومخزنة في شطرات، والتي يتم توزيعها عبر العقد لتحسين القابلية للتوسعة والمرونة التكيفية. Elasticsearch يدعم أيضًا البحث والتحليل الحقيقي الزمني، مما يسمح للمستخدمين بالاستعلام وتحليل البيانات بشكل قريب جدًا من الوقت الحقيقي.
واحدة من الميزات الرئيسية لـElasticsearch هي قدرات البحث القوية. يدعم مجموعة واسعة من استعلامات البحث، بما في ذلك البحث الكامل النصي والبحث الجغرافي، إلخ. كما يوفر الدعم لميزات التحليل المتقدمة مثل التجميعات والمقاييس وتصور البيانات.
يستخدم Elasticsearch غالبًا مع أدوات أخرى في سلسلة Elastic، بما في ذلك Logstash لجمع ومعالجة البيانات و Kibana لتصور البيانات والتحليل. معًا، توفر هذه الأدوات حل شامل للبحث والتحليل يمكن استخدامه لمجموعة واسعة من التطبيقات والاستخدامات.
ما هو Apache Lucene؟
Apache Lucene هو مكتبة البحث المفتوحة ال原始 التي توفر قدرات قوية للبحث النصي وتهيئة البيانات. تستخدم على نطاق واسع من قبل المطورين والمنظمات لبناء تطبيقات البحث، تتراوح من محركات البحث إلى منصات التجارة الإلكترونية.
يعمل Lucene من خلال تهيئة سجلات محتوى النص وتخزين الفهرس في تنظيم يمكن البحث فيه بكفاءة. يتكون الفهرس من سلسلة من القوائم المعكوسة، التي توفر تعيينات بين المصطلحات والوثائق التي تحتوي عليها. عندما يتم تقديم استعلام بحث، يستخدم Lucene الفهرس لاسترداد الوثائق المطابقة للاستعلام بسرور.
بالإضافة إلى قدرات البحث وتهيئة البيانات الرئيسية، يوفر Lucene مجموعة من الميزات المتقدمة، بما في ذلك دعم البحث الضبابي والبحث المكاني. كما توفر أدوات لتمييز نتائج البحث وترتيب نتائج البحث بناءً على الصلة.
يستخدم Lucene من قبل مجموعة واسعة من المنظمات والمشاريع، بما في ذلك Elasticsearch. مجموعة غنية من الميزات، والمرونة، وقابلية التوسع تجعله خياراً شهيراً لبناء تطبيقات البحث من كل نوع.
ما هو الفهرس المعكوس؟
فهرس Lucene المعكوس هو بنية بيانات تستخدم للبحث واسترداد بيانات النص بكفاءة من مجموعة من الوثائق. الفهرس المعكوس هو ميزة مركزية في Lucene، ويستخدم لتخزين المصطلحات والوثائق المرتبطة بها التي تشكل الفهرس.
الفهرسة مقلوبة توفر العديد من المزايا على الاستراتيجيات البحثية الأخرى. أولاً، يتيح لك استرجاع الوثائق بسرور وفعالية بناءً على المصطلحات البحثية. ثانياً، يمكنها التعامل مع كميات كبيرة من البيانات النصية، مما يجعلها مناسبة لحالات الاستخدام التي تتطلب مجموعات كبيرة من الوثائق. أخيراً، تدعم مجموعة واسعة من ميزات البحث المتقدمة، مثل المطابقة الضبابية والتبني، التي يمكن أن تحسن دقة وعلاقة نتائج البحث.
لماذا Elasticsearch؟
هناك العديد من الأسباب التي تجعل Elasticsearch اختيارًا شائعًا لبناء تطبيقات البحث والتحليلات:
سهولة التوسع (توزيعي): تم تصميم Elasticsearch لتوسيعها أفقيًا من الصفر. كلما احتجت إلى زيادة القدرة، فقط أضف المزيد من العقد، ودع الكليس الذاتي إعادة تنظيم نفسه للاستفادة من الأجهزة الإضافية.
يمكن أن يحمل خادم واحد جزءًا واحدًا أو أكثر من جزء واحد أو أكثر من الفهارس، وكلما تم إدخال عقد جدد في الكليس، يتم إضافتهم فقط إلى الحفلة. كل فهرس مثل هذا، أو جزء منه، يسمى شطرًا، ويمكن نقل شطرات Elasticsearch حول الكليس بسهولة شديدة.
كل شيء هو مكالمة JSON واحدة (RESTful API): Elasticsearch هي محرك بحث يعتمد على API. يمكن إجراء معظم الإجراءات باستخدام API RESTful بسيط باستخدام JSON عبر HTTP. وتكون الردود دائمًا بتنسيق JSON.
قوة التحليل الكامنة في Lucene: يستخدم Elasticsearch Lucene داخليًا لبناء قدراته المتقدمة في البحث الموزع والتحليلات. نظرًا لأن Lucene هي تكنولوجيا موثوقة بها ومستمرة التطور مع إضافة المزيد من الميزات وأفضل الممارسات، فإن وجود Lucene كمحرك أساسي يدعم Elasticsearch.
خيارات DSL الاستعلام الممتازة: تُظهر واجهة REST API لغة DSL الاستعلام المعقدة والقوية جدًا والتي يسهل استخدامها. يمكن أن يحتوي كل استعلام على كائن JSON يشمل أي نوع من الاستعلامات أو حتى عدة منها مجتمعة. استخدام الاستعلامات المصفاة، مع بعض الاستعلامات التي تعبر عنها كفلاتر Lucene، يساعد على تحقيق التخزين المؤقت وبالتالي تسريع الاستعلامات الشائعة أو المعقدة ذات الأجزاء التي يمكن إعادة استخدامها.
دعم التعددية العمليات: يمكن تخزين مصادر متعددة على تثبيت واحد من Elasticsearch – عقدة أو سلسلة. الجميل هو أنه يمكنك استعلام مصادر متعددة باستخدام استعلام واحد بسيط.
دعم ميزات البحث المتقدمة (النص الكامل): يستخدم Elasticsearch Lucene تحت غطاء محرك السيارة لتقديم أقوى القدرات في البحث النصي الكامل المتاحة في أي منتج مفتوح المصدر. يأتي البحث مع دعم لغات متعددة، لغة بحث قوية، دعم للمواقع الجغرافية، اقتراحات did-you-mean تعتمد على السياق، تلميحات البدء في البحث، وملخصات البحث. دعم البرامج النصية في المرشحات والنقاط.
قابل للتكوين والتوسع: يمكن تغيير العديد من إعدادات Elasticsearch أثناء تشغيل Elasticsearch، ولكن بعضها سيتطلب إعادة التشغيل (وفي بعض الحالات، إعادة الفهرسة). يمكن تغيير معظم الإعدادات أيضًا باستخدام REST API.
موجّه للوثيقة: تخزين الكيانات الحقيقية المعقدة في Elasticsearch كوثائق JSON منظّمة. يتم تصنيف جميع الحقول افتراضيًا، ويمكن استخدام جميع المصنفات في عملية استعلام واحدة لإرجاع النتائج بسرعة مذهلة.
خالية من المخطط: يتيح Elasticsearch لك البدء بسهولة. ارسل وثيقة JSON، وسيحاول الكشف عن بنية البيانات، تصنيف البيانات، وجعلها قابلة للبحث.
إدارة النزاع: يمكن استخدام التحكم المتفائل بالإصدارات حيثما يكون ذلك ضروريًا لضمان عدم فقدان البيانات بسبب تغييرات متنافسة من عدة معالجات.
مجتمع نشط: المجتمع، بالإضافة إلى إنشاء أدوات وبروتوكولات لطيفة، يكون مفيدًا وداعمًا للغاية. الإحساس العام رائع، وهذا مقياس مهم لأي مشروع برمجيات مفتوحة المصدر. هناك أيضًا بعض الكتب التي يتم كتابتها حاليًا من قبل أعضاء المجتمع والعديد من مدونات الإنترنت تشارك تجارب ومعرفة.
هيكلة Elasticsearch
المكونات الرئيسية لهيكلة Elasticsearch هي:
عقدة: العقدة هي مثيل لـ Elasticsearch يخزن البيانات ويوفر قدرات البحث والفهرسة. يمكن تكوين العقد ليكون إما عقدة إدارية أو عقدة بيانات، أو كليهما. تتولى العقد الإدارية الإشراف على إدارة الخوادم المشتركة، بينما تخزن العقد البيانات البيانات وتجري عمليات البحث.
خوادم مشتركة: الخوادم المشتركة هي مجموعة من عقد واحد أو أكثر يعملون معًا لتخزين ومعالجة البيانات. يمكن أن تحتوي الخوادم المشتركة على مصنفات متعددة (مجموعات من الوثائق) وشيرد (طريقة لتوزيع البيانات عبر عدة العقد).
الفهرس: الفهرس مجموعة من الوثائق التي تتشارك بنية مماثلة. يُمثّل كل وثيقة ككائن JSON ويحتوي على حقل أو أكثر. يفهرس Elasticsearch جميع الحقول افتراضيًا مما يجعل البحث وتحليل البيانات سهلاً.
الشُرائح: يمكن تقسيم الفهرس إلى عدة قطاعات، وهي في الأساس مجموعات أصغر من الفهرس. يسمح التجزئة بمعالجة البيانات بشكل موازٍ وتخزينها بشكل موزع عبر عقد متعددة.
النسخ الاحتياطية: يمكن لـ Elasticsearch إنشاء نسخ احتياطية لكل قطاع لتوفير المعالجة المتكاملة والتوافق العالي مع الاستمرارية. النسخ الاحتياطية هي نسخ من القطاع الأصلي ويمكن أن تكون موجودة على عقد مختلفة.
هيكل الخوادم التي تخزن البيانات
تتولى عقد البيانات تخزين البيانات وفهرستها وإجراء عمليات البحث والتجميع. تم تصميم الهيكل ليكون موزعًا وقابل للتوسع، مما يسمح بالتوسع الأفقي عن طريق إضافة عقد أكثر إلى الخوشه.
إليكم المكونات الرئيسية لهيكل مجموعة عقد البيانات في Elasticsearch:
عقد البيانات: العقد هو مثيل لـ Elasticsearch يخزن البيانات ويوفر قدرات البحث والفهرسة. في مجموعة عقد البيانات، يكون كل عقد مسؤولاً عن تخزين جزء من بيانات الفهرس وخدمة استعلامات البحث ضد تلك البيانات.
حالة الخوشه: حالة الخوشه هي بنية بيانات تحتوي على معلومات حول الخوشه، بما في ذلك قائمة العقد والفهارس والشُرائح ومواقعها. العقد الرئيسي هو المسؤول عن الحفاظ على حالة الخوشه وتوزيعها إلى جميع العقد الآخرين في الخوشه.
اكتشاف ونقل: العقد في مجموعة Elasticsearch يتواصلون مع بعضهم البعض باستخدام بروتوكولين: اكتشاف ونقل. بروتوكول الاكتشاف مسؤول عن اكتشاف العقد الجدد الانضمام إلى الخوادم أو العقد التي غادرت الخوادم. بروتوكول النقل مسؤول عن إرسال واستقبال البيانات بين العقد.
طلب الفهرسة
طلب الفهرسة يتم تنفيذه كمخطط بلوك في Elasticsearch.
من يستخدم Elasticsearch؟
بعض الشركات والمنظمات التي تستخدم Elasticsearch:
Netflix: Netflix يستخدم Elasticsearch لتشغيل محرك البحث والتوصيات الخاص بهم، مما يسمح للمستخدمين بالعثور بسرور على محتوى لمشاهدته.
GitHub: GitHub يستخدم Elasticsearch لتوفير القدرة على البحث السريع والفعال عبر مستودعات الكود الخاصة بهم، والقضايا، والطلبات المقترحة.
Uber: Uber يستخدم Elasticsearch لتشغيل منصتهم التحليلات الحية، مما يسمح لهم بتتبع وتحليل بيانات خدمة التاكسي الخاصة بهم في الوقت الحقيقي.
ويكيبيديا: ويكيبيديا تستخدم Elasticsearch لتشغيل محرك بحثها وتوفير نتائج البحث السريعة والدقيقة للمستخدمين.
Source:
https://dzone.com/articles/introduction-to-elasticsearch-1