الستیک سرچ یک موتور جستوجو و تحلیل متنباز است. این موتور جستوجو به کاربران اجازه میدهد که دادههای خیلی بزرگ را در مدت زمان خیلی کم، جستوجو کرده، آنالیز و ذخیره کنند. این ابزار قدرتمند در سالهای اخیر بین اغلب افراد جامعه برنامهنویسان، مخصوصاً در بین توسعهدهندگان و دیتاساینتیستها، محبوبیت زیادی پیدا کرده است. اگر دقیقاً نمیدانید که این ابزار چیست، همراه ما باشید که در این مطلب ابتدا ببینیم که الستیک سرچ چیست، چگونه کار میکند و پس از آن هم مهمترین مزایا و مشخصههای آن را با هم بررسی کنیم.
الستیک سرچ چیست؟
بهصورت کلی، باید بگوییم که الستیک سرچ یک موتور جستوجوی توسعهیافته است که بر اساس کتابخانه لوسین در آپاچی ساخته شده است. هدف اصلی و اولیه طراحی این موتور جستوجو این بوده که بتواند با انواع دادهها مثل متن، اعداد، دادههای جغرافیایی و دادههای ساختاریافته کار کند. این ابزار کاربردی، از روش RESTful API برای برقراری ارتباط با دیگر اپلیکیشنها استفاده میکند. از سوی دیگر، الستیک سرچ بهسادگی قابلیت ادغام و یکپارچهسازی با انواع زبانهای محبوب و پرکاربرد مثل جاوا، پایتون و روبی را هم دارد.
نحوه کار الستیک سرچ چگونه است؟
الستیک سرچ یک موتور جستوجو و تحلیل داده توزیعیافته است که از معماری توزیعیافته (Distributed) برای مدیریت حجم عظیمی از دادهها استفاده میکند. طراحی این ابزار جستوجو بهگونهای بوده که بتواند با انواع دادهها مثل متن، اعداد، دادههای جغرافیایی و ساختاریافته کار کند. نحوه کار این موتور جستجو به این شکل است که دادهها را در کلاستری از nodeها، مرتب میکند. این nodeهای مرتبشده را میتوان برای مدیریت انواع دادهها، پیکربندی و برنامهریزی کرد. هر node در این ساختار، قابلیت ایندکسگذاری و اجرای کوئری را دارد. به این شکل، قابلیت سرچ و تحلیل سریع در اختیار کاربران قرار میگیرد.
اولین قدم برای درک نحوه کار الستیک سرچ این است که مفهوم دقیق ایندکسگذاری یا همان شاخصبندی را درک کنیم. ایندکسگذاری فرآیندی است که با کمک آن، یک شاخص (Index)، به اسناد یا همان داکیومنتهای مختلف اضافه میشود. پس از آن هم بهراحتی میتوان این داکیومنتها را بر اساس همان شاخص افزوده شده، بهسرعت جستوجو یا بازیابی کرد. این فرآیند، ایندکسگذاری یا شاخصبندی نامیده میشود.
در هر ایندکس، هر داکیومنت از فیلدهایی ساخته میشود که دارای اطلاعات مشخصی هستند. این اطلاعات ممکن است عنوان داده، نویسنده سند، تاریخ ساخت آن یا هر نوع اطلاعات قابل دستهبندی دیگر باشند.
جستوجوی الستیک از یک روش ایندکسگذاری معکوس استفاده میکند. این روش، نوعی ساختار داده است که با کمک اصطلاح یا عبارت خاص، اسناد را مدیریت میکند. در این حالت هر سندی که دارای آن اصطلاح یا جمله خاص باشد، در یک نقشه کلی قرار خواهد گرفت.
زمانی که یک کاربر، آن عبارت خاص یا همان جمله یا اصطلاح را در الستیک سرچ جستوجو کند، آن درخواست جستوجو به همه nodeهای موجود در آن کلاستر، فرستاده میشود. پس از آن، هر node بهتنهایی در دادههای محلی خود، آن عبارت را بهصورت شاخصبندی معکوس یا Inverted Index، جستوجو میکند. پس از آن نیز نتایج همه جستوجوها با هم ترکیب میشوند. سپس همه این نتایج ترکیب شده، بهعنوان نتیجه جستوجوی نهایی در اختیار کاربر قرار میگیرد.
جستوجوی الستیک برای تشخیص میزان ارتباط یک عبارت جستوجو شده در هر داکیومنت، از Scoring Algorithm و امتیازدهی به دادههای مختلف استفاده میکند. این نوع جستوجو بر اساس فاکتورهای مختلفی همچون میزان تکرار آن عبارت در سند یا طول هر فایل، به دادهها امتیاز داده و بر این اساس، اجرا خواهد شد.
علاوه بر این نوع جستوجو، الستیک سرچ از کوئریهای پیچیدهتر هم پشتیبانی میکند. در این نوع کوئریها، کاربران میتوانند دادهها را برای یافتن الگوهای خاص هم جستوجو کنند. برای مثال، کاربران میتوانند فایلها و اسنادی را جستوجو کنند که دارای یک عبارت، اصطلاح یا هر نوع کاراکتر غیر حرفی (Wildcard)، باشند. الستیک سرچ از عملگرهای بولی هم پشتیبانی میکند. کاربران میتوانند با استفاده از این مشخصه الستیک سرچ، جستوجوی چندین عبارت و اصطلاح خاص را با هم ترکیب کرده و یک کوئری پیچیدهتر ایجاد کنند.
ساختار توسعهیافته الستیک سرچ، مقیاسپذیری و دسترسی بالایی به همه کاربران خود عرضه میکند. دادهها در الستیک سرچ بین nodeهای متعددی پخش شده و در یک فضای گسترده قرار دارند. به همین خاطر و با توجه به این گستردگی، سیستم قابلیت مدیریت حجم زیادی از داده را دارد.
از سوی دیگر، الستیک سرچ از تکنیک خوردکردن داده برای اشتراکگذاری و توزیع دادهها بین nodeهای متعدد، استفاده میکند. در این تکنیک، امکان جستوجوی موازی و سریع وجود دارد. هر تکه خوردشده از داده (Shard)، خود دارای یک مشخصه یا ایندکس داخلی است که میتوان آن را در یک node مجزا ذخیره کرد. این حالت، قابلیت توسعه افقی را هم فراهم میکند.
الستیک سرچ از روش همانندسازی (Replication) هم استفاده میکند تا احتمال خطا را کاهش داده و قابلیت دسترسیپذیری بالا را تضمین کند. میتوان یک کپی از هر تکه خورد شده از داده را در nodeهای متعددی ذخیره (روش همانندسازی) کرد. به این شکل، این اطمینان وجود دارد که حتی در صورت از بین رفتن یک node، داده از بین نمیرود و همچنان در دسترس باشد. افزون بر این، الستیکسرچ از الگوریتم مبتنی بر یکپارچهسازی (Consensus-Based) هم استفاده میکند. با کمک این الگوریتم، جستوجوی الستیک اطمینان حاصل میکند که همه دادههای موجود در سرتاسر node، کاملا پیوسته و هماهنگ هستند.
با توجه به همه این توضیحات اولیه، بهصورت کلی باید بگوییم که الستیک سرچ یک موتور قدرتمند جستوجو و تحلیل است که از معماری توزیعیافته برای مدیریت حجم عظیمی از دادهها استفاده میکند. در این موتور جستوجو، دادهها در کلاستری از node ذخیره میشوند که میتوان آن node را برای مدیریت مدلهای متنوعی از داده، پیکربندی کرد. این ابزار و موتور سرچ و تحلیل، از شاخصگذاری و الگوریتمهای جستوجو استفاده کرده تا جستوجوی سریع و کارآمد را در اختیار کاربران بگذارد و دادهها و فایلهای مد نظر کاربران را بهسرعت بازیابی کند. ساختار توسعهیافته الستیک سرچ، مقیاسپذیری بالا و در دسترسبودن را هم در اختیار کاربران میگذارد. این بخش از قابلیتهای این موتور جستوجو، باعث شده که این ابزار برای اپلیکیشنهای دارای حجم عظیمی از دادهها و جستوجوهای تحلیلی سریع، فوقالعاده کارآمد و کاربردی باشد.
با وجود این توضیحات، این سوال مهم به وجود میآید که چه مشکل یا نیازی، باعث طراحی و ساخت الستیک سرچ شد؟
دلایل ایجاد Elasticsearch چیست؟
در پاسخ به این سوال باید بگوییم که با گسترش اپلیکیشنهای مدرن تحت وب، حجم دادههای تولید شده بهشدت زیاد شد. جستوجو در این حجم عظیم داده، به یک موتور جستوجوی قوی و قابل گسترش (مقیاسپذیر) نیاز داشت و به همین خاطر، الستیک سرچ بهوجود آمد.
قبل از پیدایش الستیک سرچ، چالشهای زیادی برای موتورهای جستوجوی عادی و ابزارهای قدیمی موجود در پایگاه دادهها برای جستوجو، ایجاد شده بود. ابزارهای قدیمی، قادر به مدیریت پیچیدگی دادههای تولید شده در نرمافزارهای تحت وب نبودند و در میان حجم عظیم داده، نمیتوانستند به پاسخ مورد نظر خود دست پیدا کنند.
یکی از اصلیترین مشکلات جستوجو با ابزارهای سنتی مبتنی بر روابط میان دادهها در پایگاههای داده این بود که این نوع جستوجو، برای دادههای ساختاریافته طراحی شده بودند. به همین دلیل، امکان جستوجو دادههای غیر ساختاریافته مثل متن، صدا و ویدئو، در این ابزارها وجود نداشت. علاوه بر این، موتورهای جستوجوی سنتی، برای دورههای پیشین طراحی و تولید شده بود. به همین خاطر نمیتوانستند نیازمندیهای این دوره و حجم دادههای موجود در نرمافزارهای تحت وب را پاسخ دهند.
نیاز به موتور جستوجو و ابزار تحلیل قدرتمندتر و بهتر، با افزایش دادههای بزرگ و تحلیل بلادرنگ (Real-Time Analytic) بیشتر از پیش احساس میشد. نرمافزارهای تحت وب مدرن، حجم عظیمی از دادهها را تولید میکنند. پایگاههای داده سنتی و موتورهای جستوجوی قدیمی، نمیتوانستند خود را با سرعت تولید دادههای موجود، تطبیق دهند و سرعت رشد دادهها، بسیار بیشتر از توانایی آن ابزارهای قدیمی شده بود.
Elasticsearch بهعنوان راهحلی برای این مشکلات و چالشها، طراحی و تولید شد. این موتور جستوجوی جدید، با جستوجوی مقیاسپذیر و قدرتمند خود همراه با توانایی تحلیل دادههای موجود، میتواند حجم عظیم دادههای تولید شده در نرمافزارهای تحت وب را بهراحتی مدیریت کند.
یکی از دلایل اصلی این توانایی الستیک سرچ، معماری و ساختار توسعهپذیر آن است. با توجه به ساختار آن، الستیک سرچ میتواند حجم عظیم دادهها را مدیریت کند و با توسعه افقی، نیازهای جدیدی را که بر اثر افزایش تولید دادهها ایجاد میشود، بهراحتی پاسخ دهد.
از سوی دیگر، الستیک سرچ توانایی پشتیبانی از دادههای غیر ساختاریافته و تحلیل بلادرنگ را دارد. به همین خاطر این نوع جستوجو بهراحتی میتواند با اپلیکیشنهای داده بزرگ و آنالیزهای بلادرنگ منطبق شده و کارایی فوقالعاده خود را نشان دهد.
با توجه به همه این توضیحات، باید بگوییم که هدف اصلی و مهم طراحی و ساخت الستیک سرچ این بود که برای نرمافزارهای تحت وب و حجم عظیم دادههای تولید شده در آنها، یک موتور جستوجوی قوی بهوجود آید. زیرساخت توزیع یافته این موتور جستوجو، باعث شده که توانایی فوقالعاده خوبی برای جستوجوی دادههای غیر ساختاریافته هم داشته باشد. بنابراین باید بگوییم که جستوجوی الستیک، ابزار ارزشمندی برای مدیریت دادههای بزرگ، تحلیلهای بلادرنگ و اپلیکیشنهای مبتنی بر وب است.
ویژگیهای الستیک سرچ چیست؟
برخی از مهمترین ویژگیهای الستیک سرچ شامل این موارد است:
جستوجوی Full-Text: الستیک سرچ موتور قدرتمند جستوجوی Full-Text را فراهم کرد. این نوع سرچ، میتواند انواع جستوجوها و کوئریهای پیچیده را پشتیبانی کند و انواع الگوریتمهای رتبهبندی هم دارد.
تحلیل بلادرنگ: الستیک سرچ با فراهم کردن تحلیل Real-Time، میتواند در مدت زمان بسیار کوتاهی، حجم عظیمی از دادهها را جستوجو کرده و به این شکل، بینشهای تقریبا دقیقی (Instant-Insights) را فراهم میکند.
متن باز: الستیک سرچ یک ابزار اوپنسورس بوده و تعداد توسعهدهندگان آن بسیار زیاد است. به همین دلیل، منابع مرتبط با آن زیاد بوده و میزان پشتیبانی از این ابزار بهطرز قابل توجهی بالا است.
با وجود این مشخصهها، سوال بعدی این است که استفاده از الستیک سرچ چه مزایایی برای کاربران دارد؟
مزایای الستیک سرچ چیست؟
مهمتریم مزیتهای استفاده از الستیک سرچ شامل موارد زیر هستند:
جستوجوی سریع و کارآمد: الستیک سرچ، جستوجوی سریع و کارآمد برای حجم عظیمی از داده را در اختیار کاربر میگذارد و همین موضوع میتواند باعث افزایش بهرهوری و Insight سریعتر شود.
مقیاسپذیری: با توجه به ساختار توزیعیافته جستوجوی الستیک، بهراحتی میتوان اندازه الستیک سرچ را بر اساس نیازمندیهای اپلیکیشن، افزایش یا کاهش داد.
سفارشیسازی: با توجه به متنباز بودن این ابزار جستوجو، بهراحتی میتوان ساختار آن را با توجه به حوزه استفاده، تغییر داد و آن را با شرایط موجود منطبق کرد.
یکپارچهسازی با دیگر ابزارها: قابلیت هماهنگی و یکپارچهسازی با دیگر ابزارها و پلتفرمها مثل Logstash و Kibana، باعث میشود که بتوان یک Stack تحلیل داده قدرتمند از آن ساخت.
با بررسی مهمترین مزایای این ابزار قدرتمند، درباره بهترین فضای اجرا و راهاندازی آن، سوالات مختلفی ایجاد میشود که در بخش بعدی به بررسی این موضوع میپردازیم.
استفاده از الستیک سرچ به صورت محلی بهتر است یا بر روی فضای ابری از آن استفاده کنیم؟
کاملترین پاسخ به این سوال این است که این موضوع کاملا به حوزه کاری هر کاربر و نحوه استفاده از جستوجوی الستیک سرچ برای آن کسبوکار خاص، بستگی دارد.
استفاده از الستیک سرچ در فضای ابری
مزایای استفاده از این ابزار در فضای ابری شامل موارد زیر است:
مقیاسپذیری: همانطور که در بخشهای پیشین اشاره کردیم؛ فضای ابری، ساختار کاملا منعطفی در اختیارتان میگذارد. شما میتوانید با توجه به حجم داده خود برای ایندکسگذاری یا جستوجو، مقیاس آن را تغییر داده، کوچکتر یا بزرگتر کنید. در این حالت بهراحتی میتوانید با توجه به تعداد کاربران خود و حجم دادهها، گرههای تازهای افزوده یا گرههای فعلی را حذف نمایید.
دسترسی بالا: اغلب فضاهای ابری، با ذخیره دادههای شما در چندین سرور و با امکان دسترسی از مناطق مختلف، دسترسی فوقالعاده خوبی در اختیار شما خواهند گذاشت.
هزینه مقرون بهصرفه: با استفاده از فضای ابری، شما تنها هزینه فضای مورد استفاده خودتان را میپردازید. به عبارت بهتر شما تنها هزینه منابعی را میپردازید که بهصورت واقعی آنها را مورد استفاده قرار میدهید. با کمشدن نیازتان، میتوانید هزینه کمتری بهازای فضای مورد نیاز خود بپردازید.
سرویسهای خودکار: اغلب سرویسهای ابری، الستیک سرچ خودکار به شما عرضه میکنند که بخشی از وظایف اجرایی را بهصورت اتوماتیک انجام میدهد. این سرویسهای اتوماتیک ممکن است شامل پشتیبانگیری خودکار، بهروز رسانی و رفع مشکلات امنیتی باشند.
کلام آخر
الستیک سرچ یک ابزار قدرتمند برای مدیریت دادههای بزرگ و تحلیل بلادرنگ است. ساختار توزیعپذیر و قابلیتهای کارآمد جستوجوی این ابزار، باعث محبوبیت آن در بین توسعهدهندگان و دیتاساینتیستها شده است. امیدواریم که این معرفی اولیه و ساده، یک ایده کلی درباره ماهیت این ابزار، نحوه کارکرد و مزایای کلیدی آن را به شما داده باشد. البته اگر به شناخت بیشتر الستیک سرچ علاقه دارید، پیشنهاد میکنیم که به داکیومنتهای رسمی این ابزار مراجعه کرده و یا به جامعه فعال الستیک سرچ بپیوندید.