الاستیک سرچ چیست + مزایا و معایب الستیک سرچ
هنگامی که افراد در مورد الاستیک سرچ می پرسند، معمولا با این پاسخ ها روبرو میشوند:
- یک نوع ایندکس
- یک موتور جستجو
- یک پایگاه داده برای تجزیه و تحلیل
- سریع و مقیاس پذیر
- به نوعی شبیه گوگل
بسته به میزان آشنایی شما با این فناوری، درک چنین پاسخ هایی ممکن است برای شما ساده باشد و یا برعکس شما را گیج کند. اما واقعیت این است که تمام این پاسخ ها صحیح بوده و این تنها بخشی از جذابیت الاستیک سرچ یا الستیک سرچ خواهد بود!
در طول این سال ها، الاستیک سرچ و اکوسیستم آن که Elastic Stack نام دارد بشدت در حال رشد هستند و تا به امروز برای موارد زیادی مورد استفاده قرار گرفته اند. از یک جستجوی ساده در وبسایت یا اسناد تا داشتن ابزار هوشمندی برای تحلیل و تجسم داده ها در کسب و کارها مواردی هستند که می توانید روی الاستیک سرچ حساب کنید.
اما چگونه یک موتور جستجوی ساده که توسط یکی از موسسان کمپانی Elastic و در ابتدا برای دستورالعمل های آشپزی همسرش ساخته شد، امروزه به یکی از محبوب ترین موتورهای جستجوی سازمانی و یکی از ده DBMS های معروف تبدیل شده است؟ در این مقاله با تشریح الستیک سرچ و نحوه کارکرد آن، به این سوال پاسخ خواهیم داد.
DBMS : مخفف عبارت Database Management System به معنی سیستم مدیریت پایگاه داده، به نرم افزارهایی گفته می شود که برای ذخیره، بازیابی، تعیین و مدیریت داده ها در پایگاه داده طراحی شده اند.
الاستیک سرچ (Elasticsearch) چیست؟
الاستیک سرچ یک موتور جستجو و تجزیه و تحلیل متن باز است که بر روی پلتفرم Apache Lucene ساخته شده و در جاوا توسعه داده شده است. الاستیک سرچ ابتدا به عنوان یک نسخه مقیاس پذیر از فریم ورک جستجوی متن باز Lucene شروع به کار کرد و سپس قابلیت تراز مقیاس شاخص های Lucene به آن اضافه شد.
الستیک سرچ به شما اجازه می دهد تا حجم بسیار زیادی از داده ها را به سرعت جستجو، تحلیل و ذخیره کنید و در هزارم ثانیه پاسخ آن را دریافت کنید. این پلتفرم بدلیل جستجوی ایندکس به جای جستجوی مستقیم متن، توانایی دستیابی به پاسخ ها در سریعترین زمان ممکن را دارد.
الاستیک سرچ از ساختاری مبنی بر اسناد به جای جداول و الگوها استفاده میکند و با REST API های گسترده ای برای جستجو و ذخیره سازی داده ها همراه است. در حقیقت الستیک سرچ را می توان به عنوان سروری تصور کرد که میتواند درخواست های JSON را پردازش کند و داده ها را بصورت JSON به شما بازگرداند.
Apache Lucene : نرم افزار موتور جستجوی متن باز و رایگان که بطور کامل در جاوا نوشته شده است.
Index : ایندکس در واقع یک کپی از ستون های انتخاب شده داده از جدول است که برای یک جستجوی کارآمد طراحی شده است.
REST API : مخفف Representational state transfer، یک سبک معماری نرم افزار است که به عنوان یک راهنما برای طراحی و توسعه معماری شبکه جهانی وب ایجاد شد.
JSON : فرمت استاندارد تبادل اطلاعات است که از متون (خوانا برای انسان) برای ذخیره و انتقال داده های جفت مثل ویژگی-مقدار استفاده میکند.
الاستیک سرچ (Elasticsearch) چگونه کار میکند؟
برای درک بهتر نحوه کار الاستیک سرچ، بهتر است ابتدا سراغ برخی مفاهیم اساسی در مورد چگونگی سازماندهی داده ها و اجزای بک اند برویم.
-
اسناد
اسناد واحد اصلی اطلاعات هستند که میتوانند بصورت کدهای JSON، در الستیک سرچ ایندکس شوند. اسناد را میتوان مانند یک ردیف در یک پایگاه داده تصور کرد که به نمایندگی از یک اِلمان خاص (چیزی که در جستجوی آن هستید) حضور دارند. در الاستیک سرچ، یک سند معمولا چیزی فراتر از متن است و میتواند بصورت هر داده ساختاری در JSON رمزگذاری شده باشد، مواردی مثل اعداد، رشته ها و تاریخ ها. هر سند دارای یک شناسه منحصربفرد و یک نوع داده خاص است که موجودیت این سند را تعریف میکند. به عنوان مثال، یک سند میتواند یک مقاله از دایرهالمعارف یا ورودی هایی از یک سرور وب را ثبت کند.
-
شاخص ها
یک ایندکس به مجموعه ای از اسناد گفته میشود که خصوصیات یکسانی دارند. در واقع ایندکس بالاترین سطح موجودیتی است که میتوانید در الاستیک سرچ جستجو کنید. ایندکس را میتوان شبیه یک پایگاه داده تصور کرد. همه اسناد موجود در یک ایندکس بطور منطقی با یکدیگر مرتبط هستند. به عنوان مثال، در وبسایت یک فروشگاه اینترنتی میتوانید یک ایندکس برای مشتریان، یکی برای محصولات، یکی برای سفارشات و برای هر قسمتی یک ایندکس تعریف کنید. هر ایندکس با نامی قابل شناسایی است که هنگام انجام جستجو، بروزرسانی و حذف اسناد موجود در آن، از این نام استفاده می شود.
-
ایندکس معکوس
هر ایندکس در الاستیک سرچ در واقع همان ایندکس معکوس بوده که مکانیزم کاری همه موتورهای جستجو است! ایندکس معکوس یک ساختار داده است که فهرستی از محتوا مانند کلمات یا اعداد را در قسمت های خود در یک سند یا مجموعه ای از اسناد ذخیره میکند.
اساسا یک پایگاه داده شبیه Hashmap است که شما را از یک کلمه به یک سند هدایت میکند. یک ایندکس معکوس، رشته ها را مستقیما ذخیره نمیکند و در عوض هر سند را به عبارات جستجوی جداگانه تقسیم میکند (سپس هر کلمه) و آنها را به اسنادی که عبارات جستجو در آن وجود دارد ایندکس میکند.
در واقع این مکانیزم به عنوان یک جستجوی سریع در هر سند عمل میکند. با استفاده از شاخص های معکوس توزیع شده، الستیک سرچ به سرعت مناسب ترین نتایج را برای کل متن جستجو شده پیدا میکند (حتی در داده های بسیار بزرگ!).
Hashmap : در محاسبات، هر جدول هش در واقع یک ساختار داده است که یک جفت داده را بصورت مشترک پیاده سازی میکند.
-
خوشه (Cluster)
یک خوشه الاستیک سرچ، گروهی از یک یا چند نمونه node است که به هم متصل هستند. قدرت یک خوشه الاستیک سرچ در توزیع وظایف، جستجو و ایندکس تمام nodeها در خوشه است.
-
گره (node)
یک سرور منفرد بوده که بخشی از خوشه است. هر node داده ها را ذخیره میکند و در قابلیت های جستجو و ایندکس خوشه مشارکت میکند. هر node در الاستیک سرچ میتواند به سه روش مختلف پیکربندی شود:
- Master Node: خوشه الاستیک سرچ را کنترل میکند و مسئول کلیه عملیات های خوشه مثل ایجاد، حذف، ایندکس و اضافه یا حذف node هاست.
- Data Node: داده ها را ذخیره میکند و عملیات مربوط به داده ها مانند جستجو و تجمیع را اجرا میکند.
- Client Node: درخواست های خوشه را به Master Node و درخواست های مربوط به داده ها را به Data Nodeها ارسال میکند.
-
Shard
الستیک سرچ توانایی تقسیم ایندکس به چندین قطعه به نام Shard را دارد. هر Shard به خودی خود یک ایندکس کاملا کاربردی و مستقل است که میتواند در هر node درون هر خوشه جای بگیرد. با توزیع اسناد در یک ایندکس توسط چندین Shard و توزیع آنها در چندین node، الاستیک سرچ میتواند فراوانی عبارات را تامین کند که هم باعث محافظت از سخت افزار میشود و هم با افزودن گره ها به یک خوشه، ظرفیت جستجو را افزایش میدهد.
-
ماکت (Replica)
الاستیک سرچ به شما این امکان را میدهد تا یک یا چند کپی از Shard های ایندکس شده ایجاد کنید که به آنها Replica گفته میشود. در اصل هر Replica، یک کپی از Shard اولیه است. هر سند در هر ایندکس به یک Shard اولیه تعلق دارد. Replicaها نسخه اضافی از داده های شما را برای محافظت در برابر خرابی سخت افزار و افزایش ظرفیت درخواست ها مانند جستجو یا بازیابی یک سند ارائه می دهند.
-
Elastic Stack
الاستیک سرچ جزء اصلی مجموعه الاستیک استک است. الاستیک استک مجموعه ای از ابزارهای متن باز برای غنی سازی، ذخیره سازی، تجزیه و تحلیل و تجسم داده هاست. در حال حاضر به اختصار ELK نام دارد که بعد از الاستیک سرچ، Logstash و Kibana، پلتفرم Beats را نیز معرفی کرده است.
مزایا و معایب استفاده از الستیک سرچ
مزایای استفاده از الاستیک سرچ
- جستجوی کامل متن: ویژگی شگفت انگیز الاستیک سرچ این است که موثرترین روش برای جستجوی کامل متن را ارائه میدهد. به لطف موتور قدرتمند Lucene، جستجوها بر اساس زبان های مختلف انجام شده و به سرعت اسنادی که با شرایط جستجو مطابق هستند را نمایش میدهد. برای این محاسبات از الگوریتم TF/IDF استفاده میشود.
- پردازش موازی: اگرچه الستیک سرچ قادر به پردازش جداگانه داده هاست، اما داده ها را همزمان در چندین node پردازش میکند. پردازش موازی با اختصاص Shard و Replica در هر node باعث ایجاد بهره وری بالاتر میشود. این روش در حین پردازش جستجو، اطلاعات مربوط به کلیه Shard هایی که داده های لازم برای اجرای جستجو را دارند بازیابی میکند. پردازش بسیاری از nodeها بصورت موازی باعث استفاده موثر از حافظه میشود.
- موازی سازی داخلی: بهترین قسمت پردازش موازی الاستیک سرچ این است که تمام این پردازش ها بصورت داخلی انجام میشود. به این معنی که کاربر نیازی به انجام کاری برای ایجاد مسیرهای جستجو در Shard ها ندارد. این سیستم پیش فرض در الاستیک سرچ کار را بسیار راحت میکند.
- معماری: برخلاف پایگاه های داده مرتبط، الستیک سرچ از معماری قدرتمندی برخوردار است. برخی از بخش های اصلی این معماری، اسناد، خوشه ها، ایندکس، node، Shard و Replicaها هستند. مهمترین قسمت این معماری را باید این موضوع دانست
Shard : به عنوان یک قسمت از داده هاست که بر روی یک node اجرا میشود و Replica یک نسخه کپی از Shard اصلی است که روی یک node دیگر اجرا میشود.
- بررسی nodeها: همیشه کار کردن در مقیاس بزرگ، مشکل در دسترس بودن همگان را به همراه دارد. بنابراین الاستیک سرچ برای اطمینان از در دسترس بودن همه اجزا، Shardها و nodeها را با یک رویکرد جالب مدیریت میکند. Master Node همه nodeهای دیگر را مدیریت کرده و تغییراتی مانند اضافه یا حذف شدن node ها را ثبت میکند. در صورت ایجاد هرگونه تغییر، Master Node، خوشه را مجددا به Shardها تبدیل کرده و آنها را مجدد رو nodeها سازماندهی میکند.
- سیستم خودمدیریتی: عملکرد الستیک سرچ بدلیل سازماندهی زیرساخت های خود کاملا هوشمندانه و چشمگیر است. در واقع این سیستم هرگز دچار خطا نمیشود. به این معنی که پردازش کنترل داده توسط Master Node انجام نمیشود. هیچ nodeای به تنهایی نمیتواند داده ها را پردازش کند و در نتیجه عملکرد هر کدام از nodeها نمیتواند باعث ایجاد مشکل در سیستم شود. اگر مشکلی در عملکرد Master Node یا هر یک از nodeها ایجاد شود، nodeهای دیگر بطور خودکار جای آن را پر می کنند!
معایب استفاده از الاستیک سرچ
- محدودیت در زبان ها: پشتیبانی چندزبانه برای رسیدگی به درخواست ها و پاسخ ها در الاستیک سرچ وجود ندارد و تنها از فرمت JSON استفاده میکند. در حالیکه سرویس Apache Solr از فرمت های CSV، XML نیز پشتیبانی میکند.
- سازماندهی شده: برای اجرای صحیح درخواست ها، باید طبق یک سری اصول با ایندکس ها و شناسه ها رفتار کنید. علاوه بر آن باید اطمینان حاصل کنید که وضعیت تمام nodeها سبز است نه زرد. البته وقتی داده های کمتری وجود داشته باشد، میتوانید خوشه را بصورت دستی مدیریت کنید. اما در مقیاس بزرگ باید بتوانید داده ها و زیرساخت ها را بطور موثری سازماندهی کنید.
- نیاز به حافظه های SSD: برای دریافت بازدهی بالا در کار با الستیک سرچ نیاز به سرورهایی دارید که حافظه رم آنها 64 گیگابایت باشد. در غیر اینصورت، اگر از سرورهای ضعیف تر استفاده کنید، احتمال خرابی و ایجاد مشکل وجود دارد. علاوه بر آن درخواست ها در حافظه های SSD با سرعت بیشتری نسبت به هاردیسک ها انجام میشود. البته میدانید که حافظه های SSD قیمت بیشتری دارند و ایجاد این زیرساخت ممکن است هزینه بر باشد.
کاربردهای الاستیک سرچ
اکنون که متوجه شدیم الاستیک سرچ چیست و با معماری و مفاهیم موجود در آن آشنا شدیم، درک بهتری از چگونگی استفاده از آن را داریم. در لیست زیر برخی موارد اصلی استفاده از الستیک سرچ را بررسی میکنیم:
-
جستجو در برنامه
برای برنامه هایی که برای دسترسی، بازیابی و گزارش داده ها بشدت به یک پلتفرم جستجو متکی هستند.
-
جستجو در وبسایت
وبسایت هایی که محتوای زیادی ذخیره میکنند، الاستیک سرچ را ابزاری بسیار مفید برای جستجوی موثر و دقیق میدانند. به همین دلیل الاستیک سرچ بطور پیوسته در حوزه جستجو سایت، در حال پیشرفت است.
-
جستجوی شرکتی
الاستیک سرچ امکان جستجوی گسترده برای شرکت ها را فراهم میکند که این سرویس جستجوی اسناد، جستجوی محصولات اینترنتی، جستجوی وبلاگ، جستجوی افراد و جستجوی هر چیزی که فکر میکند را داراست. در حقیقت الستیک سرچ در بسیاری از وب سایت های معروف که روزانه از آنها بازدید میکنیم در حال استفاده است. این پلتفرم برای دستیابی به موفقیت در مدیریت شبکه های داخلی شرکت های بزرگ کاملا ضروری است.
-
تجزیه و تحلیل ورود به سیستم
همانطور که گفتیم، الاستیک سرچ معمولا برای تجزیه و تحلیل داده های ورود بصورت آنی و مقیاس پذیر استفاده میشود. همچنین در این زمینه آمارهای مهمی در مورد معیارهای ورود فراهم میکند.
-
معیارهای زیرساخت و نظارت بر آنها
بسیاری از شرکت ها از سرویس ELK برای تجزیه و تحلیل معیارهای مختلف استفاده میکنند. در واقع جمع آوری داده ها از طریق چندین پارامتر که بسته به مورد استفاده میتواند متفاوت باشد، از مهمترین دلایل حضور ELK در این شرکت هاست.
-
تجزیه و تحلیل امنیتی
یکی دیگر از کاربردهای مهم الاستیک سرچ، تجزیه و تحلیل امنیت است. گزارش های دسترسی و امنیت سیستم را میتوان با سرویس ELK تحلیل کرد و یک تصویر کامل از آنچه در سیستم های شرکت رخ میدهد را بصورت آنی مشاهده کرد.
-
تجزیه و تحلیل کسب و کارها
بسیاری از ویژگی های قابل استفاده در ELK آن را تبدیل به گزینه مناسبی برای تحلیل کسب و کار میکند. البته در اکثر سازمان ها آموختن نحوه پیاده سازی این سرویس زمان زیادی نیاز دارد. به ویژه در سازمان هایی که علاوه بر الاستیک سرچ از چندین منابع داده دیگر نیز استفاده میشود. زیرا Kibana فقط با داده های الاستیک سرچ کار میکند.
نتیجه گیری
در این مقاله سعی کردیم پاسخ دهیم که الستیک سرچ چیست، چگونه کار میکند و چه کاربردهایی دارد. بطور خلاصه الاستیک سرچ یک موتور جستجو است که ساختار و اجزای آن باعث ایجاد ویژگی هایی مثل سرعت بالا و مقیاس پذیری آن شده اند. از الستیک سرچ میتوان برای جستجو، تحلیل، پردازش و ذخیره اطلاعات استفاده کرد. البته برای استفاده از این سرویس باید به مفاهیم چندگانه SQL، NoSQL و RESTAPI تسلط نسبی یا حداقل آشنایی داشته باشید. اگر میخواهید اطلاعات بیشتری در مورد الاستیک سرچ بدست آورید میتوانید به سایت آنها به آدرس elastic.co مراجعه کنید. امیدواریم این مقاله برای شما مفید بوده باشد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.