کلیدواژه‌شناسی در Elastic Search

کلیدواژه‌شناسی در Elastic Search

در این بخش با اصلی‌ترین کلیدواژه‌ها و مفاهیم در Elasticsearch آشنا می‌شویم. توجه داشته باشید درک کامل از این بخش کمک بسیاری در ادامه‌ ی دوره به شما خواهد کرد. برای فهم بهتر مفاهیم فرض کنید لیستی از اطلاعات پرواز‌های داخلی شرکت هواپیمایی ماهان را به عنوان داده ی نمونه(Sample data) داشته باشیم تا در تعاریف زیر از این داده ی نمونه استفاده کنیم:

Document: یک واحد اطلاعات به فرمت JSON است که در Elasticsearch ذخیره می‌شود. در document ها اصل (source) داده ها بدون هیچ تغییری ذخیره می‌شود. در مثال داده ی نمونه، هر document برابر اطلاعات یکی از پروازها خواهد بود.

Field: فیلد‌های اطلاعاتی یا همان data field‌ ها که به صورت key و value در document ذخیره می‌شوند. برای مثال، ساعت پرواز یا مبدا و مقصد پرواز مثالی هایی از field هستند.

Index: به مجموعه‌ای از document‌ های مربوط به یک موضوع مشخص، index گفته می‌شود. برای مثال مجموعه ی اطلاعات همه ی پرواز‌ها یک index خواهد بود.

Indexing: عمل ثبت یک document در index را اصطلاحا indexing یا شاخص‌گذاری می‌گویند. طی این فرایند علاوه بر اصل داده های document، کلمات کلیدی متون شناسایی و ذخیره می‌شوند.

Mapping: تعریف ساختار داده ها در فیلد‌های اطلاعاتی document های یک index را mapping می‌گویند که شامل مواردی همچون نوع داده، نوع تحلیلگر و سایر اطلاعات اضافی در مورد هر یک از field ها می‌شود. Mapping را می‌توان مشابه schema در پایگاه داده های رابطه ای‌ در نظر گرفت. در نمونه ی داده‌های پرواز، اینکه برای مثال فیلد ساعت پرواز از نوع زمان، شماره پرواز به عنوان کلید یکتا و مبدا و مقصد پرواز از نوع کلمات کلیدی باشند، در واقع mapping ایندکس پرواز‌ها را مشخص می‌کند.

Token  (Term): هنگامی که یک متن (Text)، توسط تحلیلگر ها در Elasticsearch مورد پردازش قرار گیرد، خروجی آن مجموعه‌ای از term ها است که معمولا (نه حتما همیشه!) کلمات مجزا از هم و معنادار بوده و برای شرکت در فرایند جستجو بسیار بهینه هستند. برای مثال عبارت "من یک برنامه نویس حرفه ای هستم" ممکن است تبدیل به term های ] من، برنامه، نویس، حرفه [ شود.

Inverted Index: یک ساختار‌داده‎ی بهینه شده در حافظه رم است که طبق آن به سرعت مشخص می‌شود هر term یا کلمه کلیدی در کدام document ها تکرار شده است. اگر Index را همانند فهرست موضوعی ابتدای کتاب‌ها در نظر بگیریم، Inverted Index معادل فهرست واژگان انتهای کتاب است که جستجوی سریع یک واژه بر مبنای اینکه در چه صفحه هایی تکرار شده است را ممکن می‌کند!

Analysis: فرایند تجزیه و تحلیل یک متن توسط تحلیلگر‌ها و ذخیره term های آن در inverted index را analysis می‌گویند. تحلیلگر‌ها هم در زمان indexing داده ها و هم در زمان جستجو مورد استفاده قرار می‌گیرند.

Query: یک درخواست جهت دریافت اطلاعاتی از داده های ذخیره شده در Elasticsearch می‌باشد. Query همانند یک سوال قابل فهم برای Elasticsearch در خصوص ویژگی‌های داده هایمان است برای مثال محتوای متن یا عنوان کدام دوره‌های آموزشی شامل عبارت "زبان برنامه‌نویسی شی گرا" یا موارد مشابه است!

Shard: در کتابخانه Apache Lucene که Elasticsearch بر پایه‌ی آن توسعه داده شده است، document های یک index ، در بخش هایی به نام Shard قرار می‌گیرند. در حقیقت Apache Lucene، هر shard را به عنوان مجموعه‌ای از داده می شناسد و چیزی در مورد ایندکس های Elasticsearch نمی‌داند. پس هر ایندکس Elasticsearch می‌تواند به یک یا چند shard تقسیم‌بندی شود! حال Elasticsearch از این قابلیت برای دو منظور بهره برداری می‌کند: اول آنکه برای مقابله با از بین رفتن داده ها در صورت بروز مشکلات سخت افزاری، این امکان را دارد تا کپی shard های یک ایندکس را در سرور های متعدد ذخیره کند. shard های کپی شده را در اصطلاح replica shard و shard اولیه‌ی ایندکس را primary shard می‌گویند. دوم آنکه با توزیع shard ها در سرور های مختلف، بار درخواست‌ های جستجو را میان چندین سرور پخش می‌کند و با اینکار ظرفیت پذیرش درخواست های سنگین جستجو را فراهم می‌کند. در خصوص shard های primary و replica در ادامه‌ی دوره بیشتر توضیح داده خواهد شد.

Node: هر نمونه از سرویس Elasticsearch معمولا در یک سرور جداگانه نصب می‌شود. هر سروری که سرویس Elasticsearch روی آن نصب شده است را یک node یا گره می‌گویند.

Cluster: یک یا مجموعه‌ای از node های Elasticsearch که با یکدیگر در ارتباط باشند، یک cluster یا خوشه را تشکیل می‌دهد. node ها در سطح یک cluster با یکدیگر در ارتباط بوده و یکدیگر را می‌شناسند.

در تصویر زیر سعی شده است شمای کلی از ساختار یک خوشه فرضی Elasticsearch ترسیم شود. در این خوشه شرایط زیر برقرار است:

  • شامل 2 گره (سرور) به نام‌های node_1 و node_2 می‌باشد.
  • شامل دو index به نام‌های index_1 و index_2 و هریک از index ها شامل دو shard می‌باشد.
  • برای index_1 هیچگونه replica shard یا نسخه‌ی کپی در نظر گرفته نشده است و برای index_2 تعیین شده است تا یک نسخه ی پشتیبان از shard های اصلی داشته باشد.

توجه داشته باشید هیچگاه نسخه‌های replication و primary از Shard های یک index در یک سرور نگهداری نمی‌شوند تا در صورت بروز مشکل برای سرور، داده های پشتیبان از سرور دیگر قابل دسترس باشند (این قابلیت با نام high availability شناخته می‌شود که در درس‌های قبلی با عنوان همیشه در دسترس بودن نیز به آن اشاره شد.)

دوره در دست تالیف است ... rocket
نظرات
اگر login نکردی برامون ایمیلت رو بنویس: