مدت زمان تقریبی مطالعه: 7 دقیقه

معماری الستیک سرچ چیست و چگونه عمل می کند؟

Elasticsearch یک موتور جستجو و تجزیه و تحلیل رایگان و متن باز (open source) است که بر روی کتابخانه آپاچی لوسن ساخته شده است و بخش مهمی از مجموعه ابزار های متن باز و رایگان Elastic Stack محسوب می شود. به وسیله ی این موتور جست‌وجو می توان داده‌های خیلی بزرگ را در مدت زمان خیلی کم، جست‌وجو ، آنالیز و ذخیره کرد و به همین علت در سال‌های اخیر بین شرکت هایی با داده های عظیم، برنامه‌نویسان و دیتاساینتیست‌ها و غیره محبوبیت زیادی پیدا کرده است. قطعا برای پردازش این حجم از داده، الستیک سرچ به معماری قدرتمندی احتیاج دارد. در ادامه درباره ی معماری الستیک سرچ و نحوه عملکرد آن بیشتر صحبت کنیم.

معماری الستیک سرچ

معماری الستیک سرچ

Elasticsearch از انواع داده ها، از جمله داده های عددی، متنی، ساخت یافته، بدون ساختار و جغرافیایی پشتیبانی می کند. در معماری الستیک سرچ، نود ها و کلاستر ها نقش مهمی دارند و مرکز معماری الستیک سرچ هستند. هر نود در یک کلاستر، به درخواست HTTP مشتری ای که می خواهد به کلاستر ارسال کند را، رسیدگی می کند.
معماری الستیک سرچ از 7 بخش اصلی تشکیل شده است که عبارتند از:

کلاستر

کلاستر ها در معماری الستیک سرچ، از گروهی از نود ها تشکیل شده اند که داده ها را ذخیره می کنند. تعداد نود هایی که در ابتدا در هر کلاستر وجود دارند، قابل تنظیم است اما معمولا در شروع کار، یک نود کافی است. می‌توانید تعداد نود ها و آدرس سرور مجازی این اطلاعات را در فایل config/elasticsearch.yml که شامل تمام تنظیمات پیکربندی است، مشخص کنید.
نود ها در یک کلاستر به یکدیگر متصل هستند و هر کدام حاوی بخشی از داده های کلاستر است. هنگامی که یک نود جدید ساخته می شود، سیستم به طور خودکار یک کلاستر ایجاد می کند. نود‌ها در فرآیندهای جستجو و نمایه‌سازی کلاستر شرکت می‌کنند

نود ها

نود ها، سروری هایی هستند که به عنوان بخشی از کلاستر ها کار می کنند. در کل می توان  چندین نود را روی یک ماشین اجرا کرد. هر الستیک سرچ از یک یا چند نود در کلاستر تشکیل شده است و به طور پیش‌فرض، زمانی که یک Elasticsearch شروع به کار می کند، کار نود نیز آغاز می شود. در الستیک سرچ 3 نود مختلف وجود دارد که عبارتند از:

  1. نود اصلی: این نود، کلاستر را کنترل می کند و این کار را به وسیله ی بررسی وضعیت یک کلاستر و ارسال آن به باقی نود ها انجام می دهد. درواقع گره ی اصلی مسئول تمامی عملیات های داخل یک کلاستر از جمله حذف و ایجاد ایندکس ها است.
  2. نود داده: این نود شامل داده ها و ایندکس معکوس است و جز پیکربندی پیش فرض برای گره ها محسوب می شود.
  3. نود کلاینت: این نود به عنوان متعادل کننده بار عمل می کند و درخواست های دریافتی را به نود های مختلف خوشه هدایت می کند.

پورت 9200 و پورت 9300

معماری الستیک سرچ از دو پورت اصلی برای ارتباط استفاده می کند:

  • پورت 9200 – که از آن برای فیلتر کردن درخواست‌های خارج از کلاستر استفاده می‌شود.
  • پورت 9300 – برای ارتباط بین نودها استفاده می شود. این ارتباط در لایه انتقال رخ می دهد.

Shards

با اینکه هیچ محدودیتی برای تعداد اسنادی که می توانید در هر ایندکس ذخیره کنید وجود ندارد اما اگر یک ایندکس بیشتر از محدودیت ذخیره سازی سرور باشد، Elasticsearch با مشکل روبه رو خواهد شد.

برای جلوگیری از این مشکل، ایندکس ها به قطعات کوچکی به نام shards تقسیم می شوند. shards ها کمک می کنند تا عملیات ها را توزیع کرده و عملکرد کلی را بهبود بخشید.
پس از تشکیل یک ایندکس، می توان به تعداد مورد نیاز Shards ایجاد کرد.

Replicas

درواقع  Replicasها کپی‌هایی از Shards های هر ایندکس هستند. Replicas ها به عنوان یک روش ایمن برای اهداف بک آپ و بازیابی اطلاعات استفاده می شوند. Replicas ها هرگز روی نود هایی که حاوی  Shardsاصلی ( نسخه اولیه) قرار نمی گیرند. برای اطمینان از در دسترس بودن اطاعات، Replicas ها در مکان های مختلف ذخیره می شوند.

آنالیزور ها

آنالیزور ها مسئول تحلیل و تجزیه عبارات مختلف به مفاهیم قابل فهم هستند که این عملیات در زمان ایندکس کردن اتفاق می افتد. هر آنالیزور از یک توکنایزر و چندین فیلتر توکن تشکیل شده است که هنگام مواجهه با یک عبارت خاص، توکنایزر می تواند یک رشته را به عبارات از پیش تعریف شده تقسیم کند.

اسناد

معماری الستیک سرچ برای پشتیبانی از اسنادی طراحی شده است که به عنوان فایل JSON ذخیره می شوند. Elasticsearch از ساختارهای تو در تو پشتیبانی می کند که به مدیریت داده ها و کوئری های پیچیده کمک می کند.

روابط بین اجزا در معماری الستیک سرچ
روابط بین اجزا در معماری الستیک سرچ

تا اینجا به طور کامل با اجزای معماری الستیک سرچ آشنا شدیم. در ادامه درباره ی نحوه عملکرد الستیک سرچ، توضیح می دهیم.

برای استفاده از خدمات نصب و راه اندازی الستیک سرچ و مشاوره رایگان، همین الان با نادین سافت تماس بگیرید.

الستیک سرچ چگونه کار می کند؟

نحوه پردازش اطلاعات در معماری الستیک سرچ را می توان به سه بخش مختلف تقسیم کرد.

1- اسناد

همانطور که قبل تر به آن اشاره کردیم، دایکیومنت ها بخش اصلی اطلاعاتی هستند که می توانند در معماری الستیک سرچ ایندکس شوند. در الستیک سرچ داده‌هایی را از منابع مختلف به دایکیومنت ها اضافه می‌کنیم. می توانید از ابزارهای استخراج داده ها و تبدیل داده ها به اسناد، مانند logstash استفاده کرد.

ایندکس

پس از ذخیره سازی، داده ها باید برای قرار گرفتن در کوئری ها، ایندکس شوند. ایندکس ها یک فضای نام منطقی یا مجموعه ای از دایکیومت ها هستند که از نظر حروف مشابه هستند . درواقع  یک ایندکس را به عنوان راهی برای گروه بندی داده های مرتبط با یکدیگر است.

ایندکس کردن در معماری الستیک، شامل تعریف یک ایندکس (فضای نام) و مشخص کردن ساختار دایکیومنت برای داده ها است. اسناد با فرمت JSON به ایندکس اضافه می شوند. ایندکس کردن به الستیک سرچ امکان جستجو را می دهد.

ایندکس معکوس

Elasticsearch داده های دایکیومنت را به صورت فشرده و غیرقابل تغییر به نام ایندکس معکوس ذخیره می کند که شامل یک فهرست مرتب شده از اصطلاحات (terms)است. به مثال زیر توجه کنید تا بهتر متوجه عملکرد ایندکس معکوس شوید.

روش عملکرد ایندکس معکوس
نحوه عملکرد ایندکس معکوس

2- سرچ کردن

در این بخش، الستیک سرچ در کل دایکیومنت ها جستجو می کند که می توان در این بخش برای کاربران، یک بخش جستجو طراحی کرد.

در قسمت، 2 فرآیند اصلی اجرا می شود:

کوئری کردن

الستیک سرچ، کوئری ها در معماری الستیک سرچ را با Query DSL درست می کندتا از جستجوهای ساده تا پیچیده تر را بر اساس معیارهای مختلف انجام شود. می توانید کوئری ها را بر اساس موارد مختلفی مانند تطبیق عبارات، عبارات خاص، محدوده مقادیر یا حتی شرایط بولین پیچیده دسته بندی کنید.

جستجوی توزیع شده

هنگامی که یک درخواست جستجو دریافت می شود، الستیک سرچ کوئری را به shards های مربوطه پخش و توزیع می کند. در معماری الستیک سرچ، این shard ها در سراسر کلاستر ها وجود دارند. هر shard کوئری را به طور مستقل پردازش می کند و نتایج را برمی گرداند. نودهای داده تمام نتایج حاصل از shard ها را با هم ادغام می کنند و نتایج برای کاربر ارسال می شود.

3- نتیجه گیری

در این قسمت می توانید از ابزارهایی برای بهبود و بهینه سازی نتایج جستجو استفاده کنید..

نتایج را می توان با مراحل زیر بهینه کرد:

  • تجزیه کوئری: الستیک سرچ کوئری های کاربران را به عبارات جداگانه و عملگرهای منطقی تجزیه می کند.
  • اجرای کوئری: کوئری تجزیه شده را روی داده های ایندکس شده اجرا می کند و دایکیومنت های منطبق را بازیابی می کند.
  • امتیازدهی مرتبط: الاستیک سرچ امتیاز مربوط به هر دایکیومنت را بر اساس عوامل مختلفی مانند فراوانی عبارت، طول فیلد و موارد دیگر محاسبه می‌کند.
  • مرتب‌سازی: الستیک سرچ برای مرتب‌سازی بر اساس امتیاز مربوط، فیلد عددی یا معیارهای سفارشی اعمال می‌شود.
  • صفحه بندی: سپس داده های مرتب شده صفحه بندی می شوند تا زیرمجموعه ای از نتایج جستجو را به کاربر بازگردانند.

برای استفاده از خدمات نصب و راه اندازی الستیک سرچ و مشاوره رایگان، همین الان با نادین سافت تماس بگیرید.

بیشتر بخوانید:

راهکار نصب الستیک سرچ (Elasticsearch) و ۴ مزیت آن

همه چیز درباره موتور‌های جستجو و الاستیک سرچ

اهمیت خرید لایسنس الستیک سرچ چیست؟

جمع بندی

الستیک سرچ موتور جستجوی قوی هست با بیش از 1 میلیون کاربر است که سرعت پردازش آن به حدی زیاد است که تقریبا نزدیک به زمان واقعی است.

به طور خلاصه بیرونی ترین جزء که بزرگترین جزء معماری الستیک سرچ نیز هست، کلاستر است. یک کلاستر از یک یا چند نود تشکیل شده است. در هر نود می تواند چندین ایندکس وجود داشته باشد. هر ایندکس می تواند تعداد زیادی دایکیومنت داشته باشد و می توان آن را به تعدادی Shards تقسیم کرد.
معماری الستیک به دلیل توزیع پذیری آن، بسیار مقیاس پذیر است، مگر اینکه با حجم زیادی از داده ها سر و کار داشته باشید. شما می توانید برای نصب و راه اندازی الستیک سرچ و استفاده از خدمات مشاوره رایگان با نادین سافت تماس بگیرید.

مقالات پیشنهادی