الستیک سرچ چیست؟
در پاسخ به این سوال که «الستیک سرچ چیست؟» میتوان گفت که هم یک موتور جستجو، ایندکس، پایگاه داده تحلیلی، یک روش دادهای کلان یا موتوری مشابه گوگل است! تمامی این پاسخها وابسته به تخصص شما و مقدار آشنایی شما با این فناوری است. شاید پاسخهای فوق به شناخت این مفهوم کمک کنند یا شما را گیج کنند. به هر حال همه این پاسخها درست هستند و جنبهای از جستجوی الستیک را روشن میکنند.
در طول این سالها مفهوم الستیک (الاستیک) سرچ و مؤلفههای حول آن تحت عنوان «Elastic Stack» برای کاربردهای مختلفی از سرچ ساده روی وب سایت یا ذخیره یک سند، جمع آوری و تحلیل داده تا در ابزارهای هش تجاری برای تحلیل و ترسیم دادهها مورد استفاده قرار گرفته است. از همین رو موتور جستجوی سادهای که یکی از سازندگان الاستیک یعنی شای بانون (Shay Bannon) برای دستورهای غذایی همسرش ساخت، توسعه پیدا کرد و حالا به یکی از موتورهای جستجوی شرکتی محبوب تبدیل شده و یکی از 10 مورد از DBMS های بسیار محبوب است. در این مقاله شما را با مفهوم الاستیک سرچ، عملکرد و کاربردهایش آشنا خواهیم کرد.
مفهوم الستیک سرچ (Elasticsearch)
این مفهوم در اصل سروری برای پردازش تقاضاهای JSON و تحویل دادههای JSON است.
الستیک سرچ به عنوان موتور اپن سورس توزیع شده و موتوری تحلیلی روی آپاچی لوسن (Apache Lucene) ساخته شده و در جاوا توسعه پیدا کرد. در ابتدا به عنوان نسخه قابل ارتقای چهارچوب اپن سورس لوسن ساخته شد و بعد قابلیت مقیاس پذیری افقی شاخصهای لوسن به آن اضافه شد. با کمک الستیک سرچ، امکان ذخیره سازی، جستجو و تحلیل حجم بالایی از دادهها را به سرعت پیدا میکنید و در عرض چند میلی ثانیه به پاسخهای مدنظرتان میرسید. این فناوری به جای جستجوی متنی از جستجو در ایندکس استفاده میکند. به همین دلیل به پاسخها و نتایج سریع میرسد.
این فناوری به جای استفاده از جداول و طرحها از ساختار مبتنی بر داکیومنت ها استفاده کرده و به REST API های گستردهای برای ذخیره سازی و جستجوی داده میرسد. در اصل میتوان الاستیک سرچ را به عنوان سروری در نظر گرفت که قادر به پردازش تقاضاهای JSON و تحویل داده JSON است.
مطلب پیشنهادی: الگوریتم جست و جوی باینری
عملکرد الستیک سرچ چگونه است؟
برای درک این مفهوم باید به مفاهیم زیربنایی آن برای سازماندهی داده و زیر ساخت آن اشاره کرد.
مفاهیم منطقی
مستندات (Documents)
داکیومنتها یا مستندات، واحدهای اصلی اطلاعاتی هستند که قابل ایندکس شدن در الستیک سرچ بیان شده در قالب JSON هستند. در واقع JSON فرمت جهانی تبادل داده اینترنتی است. داکیومنت را مثل یک ردیف در پایگاه داده ارتباطی در نظر بگیرید که ماهیت خاصی (همان چیزهایی که سرچ میکنید) را نمایش میدهد. داکیومنت در الاستیک سرچ فراتر از متن یا text است و هرگونه داده ساختار یافته و رمزگذاری شده در JSON را در بر میگیرد. این داده میتواند اعداد، رشتهها و تاریخها را در بر بگیرد. هر داکیومنت دارای ID و نوع داده خاص خودش است که ماهیت آن را مشخص میکند. برای مثال، داکیومنت میتواند دایره المعارف یا ورودیهای لاگ(log) حاصل از یک سرور وب را در بر بگیرد.
شاخصها (Indices)
یک ایندکس مجموعهای از داکیومنتها با ویژگیهای مشترک است. یک ایندکس بالاترین سطح ماهیتی قابل جستجو در فناوری الستیک سرچ است. میتوانید ایندکس را مشابه پایگاه داده درون طرحواره پایگاه داده ارتباطی (relational database schema) در نظر بگیرید. تمامی داکیومنت های درون ایندکس به طور منطقی با هم در ارتباط هستند. برای مثال درون وب سایت تجارب الکترونیک میتوانید از ایندکسی برای مشتریان، محصولات، سفارشها و غیره استفاده کنید. هر ایندکس دارای نام مشخصی است که در حین ایندکس کردن، سرچ کردن، به روزرسانی و حذف داکیومنت های درونش از آن استفاده میشود.
ایندکس معکوس در الاستیک سرچ
ایندکس درون الستیک سرچ تحت عنوان ایندکس معکوس شناخته میشود که مکانیسمی مشابه تمامی موتورهای جستجو دارد. این ساختار داده، نقشهای از محتوا مثل کلمات یا اعداد را درون داکیومنت یا مجموعهای از داکیومنت ها ذخیره میکند. در اصل این ساختار داده مشابه hash map است و شما را از یک کلمه به داکیومنت میرساند. ایندکس معکوس به طور مستقیم به ذخیره سازی رشتهها نمیپردازد. در عوض هر داکیومنت را به عبارات جستجوی مجزا (مثل هر کلمه) تقسیم کرده و بعد هر عبارت سرچ را به داکیومنت های حاوی عبارت جستجو شده میرساند. برای مثال در تصویر زیر عبارت «best» در داکیومنت 2 وجود دارد. این امر باعث میشود تا نگاهی فوری برای یافتن عبارت به این داکیومنت انداخته شود. الاستیک سرچ با استفاده از ایندکسهای معکوس توزیع شده به سرعت بهترین عبارت هماهنگ با عبارتهای جستجو شده را در مجموعه بزرگی از داده ها پیدا میکند.
نمایی از ایندکس معکوس
مؤلفههای بکاند
خوشه یا کلاستر (Cluster)
کلاستر در الستیک سرچ گروهی از یک یا چند نود یا گره تشکیل شده که با هم در ارتباط هستند. قدرت کلاستر الستیک سرچ در توزیع وظایف، سرچ کردن و ایندکس کردن به تمامی نودهای درون یک کلاستر وابسته است.
مطلب پیشنهادی: رمزنگاری چیست؟
گره یا نود (Node)
یک نود، سروری واحد و بخشی از یک کلاستر است. داده و شرکت کنندگان در فرایند ایندکس کردن کلاستر و قابلیتهای سرچ، درون نود ذخیره میشود. نود الستیک سرچ را میتوان به روشهای مختلفی در نظر گرفت.
- مستر نود(Master Node):کلاستر الاستیک سرچ را کنترل نموده و در قبال تمامی عملیاتهای صورت گرفته در حیطه کلاستر مثل ایجاد و حذف یک ایندکس و حذف یا اضافه کردن نودها مسئول است.
- دیتا نود(Data Node): به ذخیره سازی داده و اجرای عملیاتهای مرتبط با داده مثل سرچ و یکپارچه سازی میپردازد.
- کلاینت نود(Client Node): تقاضاهای کلاستر را به مستر نود ارجاع میدهد و تقاضاهای مرتبط با داده را به نودهای داده ارجاع میدهد.
شاردز (Shards)
الستیک سرچ امکان تقسیم بندی ایندکس به اجزای چندگانه تحت عنوان شاردز (خرده ریزها) را فراهم میکند. هر شارد درون خودش به عنوان یک ایندکس مستقل و کامل عمل میکند که قابل هاست شدن روی هر نود درون کلاستر است. با توزیع داکیومنتها در ایندکسی که در بین چند شارد قرار دارد، میتوان این شاردها را در بین نودهای چندگانه توزیع کرد. الستیک سرچ با این روش از افزونگی (redundancy) اطمینان مییابد که باعث محافظت در برابر خرابیهای نرم افزاری و افزایش ظرفیت سرچ با اضافه شدن نودها به کلاستر میشود.
رپلیکاها (Replicas)
با الستیک سرچ میتوان یک یا چند کپی از شاردهای ایندکس تهیه کرد که تحت عنوان شاردهای رپلیکا (replica shards) شناخته میشوند. در اصل رپلیکا شارد، نسخهای از شارد اولیه است. هر داکیومنت درون ایندکس متعلق به یک شارد اولیه است. رپلیکاها میتوانند کپیهای اضافی از داده برای حفاظت از آنها در برابر خرابی سخت افزاری و افزایش ظرفیت خوانش تقاضاهایی مثل سرچ کردن یا بازیابی یک داکیومنت تهیه کنند.
مطلب پیشنهادی: قرارداد هوشمند چیست؟
الستیک استک (ELK)
الستیک سرچ مؤلفه اصلی الستیک استک است که مجموعهای از ابزارهای اپن سورس برای پردازش، تقویت، ذخیره تحلیل و مجسم کردن دادهها است. در اصل میتوان ELK را متشکل از الاستیک سرچ، لاگ استش (Logstash)، کیبانا (Kibana) و در حال حاضر هم بیتها (Beats) دانست.
اگرچه کاربران در اصل از الاستیک سرچ به عنوان موتور جستجو استفاده میکنند، ولی استفاده از آن برای لاگ کردن داده و روشی ساده برای ورود و تجسم داده را آغاز کردهاند.
مطلب پیشنهادی: دیفای (امور مالی غیرمتمرکز) چیست؟
کیبانا (Kibana)
ابزار تجسم و مدیریت داده برای الستیک سرچ است که هیستوگرام ها، گرافهای خطی، نمودارهای دایرهای و مپ ها را فراهم میکند. با کمک آن، دادههای الاستیک سرچ خودتان را مجسم نموده و الستیک استک را هدایت میکنید. میتوانید روش شکل دهی به داده را با یک پرسش آغاز کنید تا بفهمید که تجسم تعاملی، شما را به کجا خواهد رساند. برای مثال، از آنجا که کیبانا معمولاً برای تحلیل لاگ به کار میرود به شما اجازه میدهد تا به پرسشها در مورد اینکه hit های وب شما، توزیع URL ها و غیره از کجا میآیند، پاسخ دهید.
اگر اپلیکیشن خودتان را بر اساس الستیک سرچ نساختهاید، پس کیبانا روشی عالی برای جستجو و تجسم ایندکس شما با استفاده از UI قدرتمند و انعطاف پذیر است. تنها مشکل اصلی این است که هر تجسمی فقط در مقابل یک الگوی واحد ایندکس/ ایندکس عمل میکند. پس اگر ایندکسهایی حاوی دادههایی کاملاً متفاوت دارید، باید تجسم مجزایی برای هر کدام بسازید. برای کاربردهای پیشرفتهتر میتوانید از Knowi استفاده کنید. با این فناوری میتوانید در قالب چند ایندکس به الاستیک سرچ خودتان متصل شوید و آن را با سایر منابع دادهای /NosQL/SQL منابع داده REST-API ترکیب کنید و بعد تجسمی از آن را در قالب UI تجاری و کاربر پسند ایجاد کنید.
لاگ استش (Logstash)
لاگ استش برای تجمیع و پردازش داده و ارسالش به الستیک سرچ به کار میرود. این مسیرپردازش دادهای اپن سورس و تحت سرور میتواند دادهها از چند منبع را به طور همزمان جمع آوری کرده، آن را تغییر داده و برای تجمیع ارسال کند. این فناوری، دادهها را فارغ از فرمتشان از طریق شناسایی فیلدهای نامگذاری شده تغییر داده و برای ایجاد ساختار آماده میکند و آنها را به فرمتی متداول تبدیل مینماید. برای مثال از آنجا که دادهها در سیستمهای مختلف با فرمتهای مختلف قرار گرفتهاند، پس با لاگ استش میتوانید سیستمهای مختلفی مثل سرورهای وب، پایگاههای داده، سرویسهای آمازون و غیره را به یکدیگر متصل کنید و به طور مداوم دادههای مورد نیازتان را در آنها منتشر کنید.
بیتها (Beats)
بیتها مجموعه از ایجنت های (agents) سبک و هدفمند انتقال داده هستند که برای ارسال داده از صدها یا هزاران ماشین و سیستم به لاگ استش یا الستیک سرچ مورد استفاده قرار میگیرند. بیتها برای جمع آوری داده فوق العاده هستند. چون با کانتینرهای شما روی سرورتان مینشینند یا به عنوان عملیاتهایی منجر به متمرکز شدن داده در الستیک سرچ میشوند. برای مثال فایل بیت (Filebeat) میتواند روی سرورتان بنشیند، لاگ فایلها را در حین ورود وارسی کرده، تجزیه نموده و به طور همزمان برای الاستیک سرچ ارسال کند.
الستیک سرچ چه کاربردهایی دارد؟
حالا که به طور کلی با الستیک سرچ آشنا شدیم، بهتر است با کاربردهای مختلف آن هم آشنا شویم. در ادامه برخی از کاربردهای ابتدایی و شرکتی این مفهوم را معرفی خواهیم کرد.
کاربردهای ابتدایی
سرچ اپلیکیشن
این نوع الاستیک سرچ در اپلیکیشن هایی که برای دسترسی، بازیابی و گزارش داده تا حد زیادی به پلتفرم سرچ وابسته هستند، به کار میرود.
سرچ وب سایت
این الستیک سرچ در وب سایتهایی که حجم زیادی از محتوا را ذخیره کردهاند، ابزاری مفید برای سرچ های دقیق و کارآمد است. در واقع این فناوری به خوبی جای خودش را در حوزه سرچ سایت باز کرده است.
سرچ شرکتی
الستیک سرچ امکان جستجو در سطح شرکت از جمل سرچ اسناد، محصولات، بلاگ ها، اشخاص و هر دادهای که فکرش را کنید؛ فراهم کرده است. درواقع این فناوری به طور مستمر جایگزین روشهای سرچ در وب سایتهای محبوبی شده که روزانه از آنها استفاده میکنیم. الستیک سرچ از دیدگاه شرکتی منجر به موفقیت در حوزه اینترانتهای شرکتی شده است.
لاگینگ و تحلیلهای لاگ
همانگونه که اشاره شد از الستیک سرچ برای دریافت و تحلیل داده لاگ به صورت قابل توسعه استفاده میشود و همچنین نگرش عملیاتی مهمی را بر اساس معیارهای لاگ برای اجرای اقدامات فراهم میکند.
معیارهای زیرساختی و نظارت بر کانتینر
بسیاری از شرکتها از ELK برای تحلیل معیارهای مختلف استفاده میکنند. این امر شامل جمع آوری داده براساس پارامترهای عملکردی مختلف است.
تحلیلهای امنیتی
یکی دیگر از کاربردهای تحلیل الستیک سرچ به صورت تحلیل امنیتی است. لاگ های دسترسی و سایر لاگ های مرتبط با امنیت سیستم قابل تحلیل با ELK استک هستند و تصویر کاملتری از رویدادهای درون سیستم فراهم میکنند.
مطلب پیشنهادی: کاربردهای داده کاوی
تحلیلهای تجاری
بسیاری از فیچرهای ELK استک آن را به ابزار تحلیل تجاری خوبی تبدیل کرده است با این حال، نمودار یادگیری دشواری در اغلب سازمانها دارد. این امر در هنگامی که شرکتها دارای منابع دادهای چندگانه در کنار الستیک سرچ هستند هم صادق است. چون کیبانا فقط از دادههای الاستیک سرچ استفاده میکند. جایگزین مناسب آن knowi است که پلتفرم تحلیلی برای یکپارچه شدن با الستیک سرچ است و حتی به کاربران غیرفنی هم اجازه میدهد تا بدون داشتن دانش تخصصی در حوزه ELK استک به اجرای تحلیل و مجسم سازی دادهها بپردازند.
کاربردهای شرکتی الستیک سرچ
نتفلیکس (Netflix )
نتفلیکس مبتنی بر ELK استک است و از روشهای مختلفی برای نظارت و تحلیل خدمات مورد نیاز مشتریان ولاگ های امنیتی استفاده میکند. برای مثال الستیک سرچ موتور زیربنایی سیستم پیام رسان نتفلیکس است. بعلاوه این شرکت از این فناوری برای به اشتراک گذاری، جابجایی، طراحی انعطاف پذیر و مدلسازی اکوسیستم خودش به کمک تعداد زیادی از پلاگین ها استفاده کرده است. نتفلیکس به طور مستمر کاربرد محدود الاستیک سرچ را به بیش از دهها کلاستر حاوی چند صد نود افزایش داد.
ای بِی (Ebay)
ایبی با وجود سرچ و تحلیل متون مهم تجاری بی شمار از الاستیک سرچ به عنوان محور اصلی کارش استفاده کرد و پلتفرم «Elasticsearch-as-a-Service» را طراحی نمود تا به راحتی کلاستر الستیک سرچ روی پلتفرم کلود اپن استکشان به نمایش درآید.
والمارت (Walmart)
والمارت از الستیک استک برای افشای توان مخفی دادهای خودش استفاده میکند تا بتواند الگوهای خرید مشتری را شناسایی کرده؛ معیارهای عملکرد فروشگاهی را ردیابی نموده و دادههای خرید در دوران تعطیلات را تحلیل کند. همچنین از ویژگیهای امنیتی ELK برای تأمین امنیت SSO، آگاهی از ناهنجاریها و نظارت در جهت DevOPs استفاده میکند.
در نهایت . . .
در این مقاله، چیستی الستیک سرچ، عملکر و کاربردش را بررسی کردیم. به طور خلاصه، الستیک سرچ در اصل موتور جستجویی سریع و قابل توسعه در مرکز اکوسیستمی از ابزارهای مکمل است که در کنار هم کارکردهای مختلفی از جمله سرچ، تحلیل، پردازش و ذخیره سازی داده را بر عهده دارند. برای کسب اطلاعات بیشتر در این زمینه میتوانید به سرچ در زمینه Knowi بپردازید که پلتفرم تحلیلی و ترکیب شده با الاستیک سرچ است و در اختیار کاربران فنی و غیرفنی قرار دارد. لطفاً نظرات خودتان را با ما در میان بگذارید.
منبع
www.knowi.com/blog/what-is-elastic-search
دیدگاه شما