Elasticsearch چیست و چگونه کار میکند؟
Elasticsearch یکی از شبه موتورهای جستجو مانند گوگل است که برای تحلیل دادهها، هوش امنیتی، تحلیل تجاری و …استفاده میشود.
با پیشرفت روزافزون علم و فناوری، روزانه حدود 25 میلیون داده تولید میشود که این دادهها بهصورت پراکنده در اقیانوسی به نام Big data ذخیرهشده و نیازمند ابزارهایی برای تحلیل میباشند. یکی از این ابزارها Elasticsearch میباشد. در ادامه برای آشنایی بیشتر با این ابزار همراه ما باشید.
تاریخچه ELASTICSEARCH
در سال 2010 ابزار یا موتوری جستجو به نام Elasticsearch منتشرشده که توانست میان رقبای خود به شهرت وافری در زمینه تحلیل دادهها و اطلاعات، هوش عملیاتی، تحلیل تجاری، تحلیل لاگ و …دست یابد. این ایده ابتدا توسط یکی از سازندگان الاستیک به نام بانون که برای دستورهای غذایی همسرش ساخته بود شکلگرفته و رفتهرفته توانست به یکی از ابزارهای قدرتمند جستجو، درعینحال ساده در میان رقبای خود برگزیده شود. این ابزار توسط زبان برنامهنویسی جاوا بهصورت متنباز نوشتهشده و دادههای پراکنده را از منابع مختلف گرفته و طی یک پروسه پیچیده ذخیره کرده و برای تحلیل متنی استفاده میشود.
سرعت ذخیرهسازی دادهها در این ابزار بالاست، چراکه این ابزار روی آپاچی لوسن ساختهشده و بسیار پیچیده است اما این پیچیدگی با استفاده از قابلیت API یا API RESTFULL HTTP بهسادگی تبدیل میشود. به دلیل اینکه این فناوری از روش جستجو ایندکس استفاده میکند، میتوانید حجم بالایی از دادهها در مدت زمانی اندک و بسیار سریع در فایل کوچکی ذخیره کنید.
حالا ELASTICSEARCH برای چه چیزهایی استفاده میشود
ELASTICSEARCH برای جستجوی سریع (در عرض چند میلیثانیه) انواع دادهها استفادهشده و قابلیت پیادهسازی روی صدها لپتاپ در سراسر جهان را دارد. این ابزار قدرتمند و درعینحال ساده، پایداری و انعطافپذیری بالایی داشته و توانایی تشخیص در هنگام خرابی را داشته و دادهها در کلاستر خود ذخیره کرده تا هنگام خرابی شبکه یا خرابشده ساختارهای سختافزاری نیز قابلاستفاده باشد. شما میتوانید در انواع جستجوی برنامهها، وبسایتها، جستجوهای سازمانی، تجزیهوتحلیلهای تجاری و تجزیهوتحلیل دادهها با سرعت بسیار بالایی از این ابزار استفاده کنید.
یک سری شاخصها مانند ایندکس، نوع، سند، گره، تقریباً بیدرنگ، خوشه یا کلاستر،Shard و Replicas در ELASTICSEARCH وجود دارند که قبل از استفاده و برای درک بهتر حتماً باید با این نامها و مفاهیم آنها آشنا شوید.
شاخصهای مورداستفاده در ELASTICSEARCH
- سند
- واحد اصلی را در الاستیک سرچ بهصورت رایگان تشکیل داده و دارای دادههای با ویژگیهای مشابه است که در ایندکس با نامهای منحصربهفرد شمارهگذاری شده تا مورد تحلیل و پردازش قرار گیرد.
- ایندکس: وقتی میگوییم الاستیک سرچ از روش ایندکس برای ذخیرهسازی و استفاده از دادهها استفاده میکند به این معنی است که مجموعه ای از اسناد با ویژگیهای مشابه، با استفاده از دستورهای sql با نامی یکتا و حروف کوچک ذخیره و نگهداری میشود تا در زمان مناسب برای بازخوانی فراخوانده شود.
- به علت یکتا بودن این نام برای هر شاخص، سرعت اجرا در زمان استفاده از فرایندهای مختلف در این پرسه بالاتر میرود.
- نوع
- مجموعه ای از فیلدها برای اسناد توسط کاربر تعریفشده که به آن نوع یا type گفته میشود و میتوان مقادیر بیش از یک نوع را برای هر سند تعریف نمود.
- گره یا نود (Nude)
- سروری است که دادهها برای کارهای اجرایی روی آن ذخیره میشوند. هر نود دارای یک نام است که در زمان اجرای فرایند یک شناسه منحصربهفرد بهطور تصادفی به آن اختصاص داده میشود. گره یا نود خود به انواع مختلفی ازجمله: مستر نود، دیتا نود، کلاینت نود بخشبندی میشود.
- مستر نود: روشی است که در آن کلاستر، الاستیک سرچ را کنترل کرده و مسئول حذف و یا ایجاد گرهها یا ایجاد و حذف یک ایندکس میباشد.
- دیتا نود: دادهها را ذخیره کرده و عملیاتی ماند یکپارچهسازی را روی آنها انجام میدهد.
- کلاینت نود: وظیفه ارجاع تقاضاهای کلاستر به مستر نود و تقاضای دادهها به دیتا نود را بر عهده دارد.
- تقریباً بیدرنگ
- این مقدار بسیار اندک بوده و زمان موردنیاز برای جستجو برای هر سند را مشخص مینماید؛ بنابراین الاستیک سرچ در هر ثانیه یک وضعیت جدید از اسناد را تشکیل داده و برنامهریزی میکند.
- خوشه یا کِلاستِر
- همانطور که از اسمش نیز پیداست برای دستهبندی و خوشهبندی چند گره به کار میرود که باهم کار میکنند. نام خوشه دارای اهمیت بالایی است، چراکه برای اتصال چند گره به یکدیگر از نام خوشه استفاده میشود. اهمیت خوشهها در این حالت مشخص میشود که تمامی دادههای گرهها را ذخیره کرده و فرایند جستجو و سرچ را برای آنها آسان میکند.
- شارد:
به علت اینکه فرایند ذخیرهسازی اطلاعات در هر سرور ممکن است انرژی زیادی از سرور بطلبد، درنتیجه سرور هر شاخص را به بخشهایی به نام شاردز تقسیمبندی میکند که برای هر شاخص مستقل و متمایز است و میتواند یک گره یا خوشه را در خود نگه دارد.
- Replicas
- رپلیکاس که مانند یک کپی از نقطهی دیگر است و برای وصل شدن به تیکههای اصلی حین جستجو و همچنین برای جلوگیری از خطرهای تصادفی مانند به اشتراکگذاری یک گره آفلاین مورداستفاده قرار میگیرد.
کاربردهای Elasticsearch
همانطور که در بالا نیز اشاره کردیم، الاستیک سرچ برای جستجو انواع دادهها در حجم بسیار بالا و تحلیل آنها در مدت زمانی بسیار ناچیز مانند یک ثانیه به کار میرود که این میزان سرعت توانسته شهرت بسیار خوبی برای این ابزار به ارمغان بیاورد.
- سرچ وبسایتها: الاستیک سرچ ابزار مناسبی برای سرچ سایتهایی است که حجم زیادی از محتوا را ذخیره کردهاند.
- سرچ اپلیکیشن: اپلیکیشن هایی که برای دسترسی و یا بازیابی باید در پلتفرم سرچ اجرا شوند، گزینههای مناسبی برای الاستیک سرچ میباشند.
- سرچ سازمانی: الاستیک سرچ بهسرعت تبدیل به جایگزین ابزارهایی مانند گول سرچ شده است. یکی از کاربردهای جالب الاستیک سرچ، سرچ سازمانی است که در آن میتوان برای سرچ افراد، اسناد، دیتاها و هر چیز دیگر که فکرش را بکنید، استفاده کرد.
- لاگینگ: از الاستیک سرچ میتوان برای تحلیل دادههای لاگ و همچنین به وجود آوردن نگرش عملیاتی بر اساس معیارهای آن برای اقدامات مربوط استفاده نمود.
- فواید ELASTICSEARCH
- ازجمله مزایای الاستیک سرچ میتوان به کارایی بالا، زمان موردنیاز بسیار ناچیز، توسعه ساده و عملیات real time اشاره کرد.
به علت اینکه الاستیک سرچ یک ابزار توزیع است، لذا چون دادهها را بهصورت موازی پردازش میکند، سرعت و کارایی آن بسیار بالا میرود. ازجمله نرمافزارهای محبوب در این زمینه که از سرچ موازی الاستیک استفاده میکند میتوان به کیبانا اشاره کرد. به علت یکپارچه بودن سرچ در این ابزار، کیبانای مشهور به کاربر این امکان را میدهد که سورس کدهای خود را بهآسانی ذخیره نموده و در ELK بارگذاری نماید.
- الاستیک سرچ به علت متنباز بودن مورد بسیار جالبی برای توسعهدهندگان میباشد، به این معنا که میتوان آن را با زبانهای برنامهنویسیای مانند جاوا اسکریپت،PHP و …توسعه داده و به رشد رساند.
- نرمافزارهای تشخیص خطا یا مانیتورینگ که بهسرعت بالایی برای پردازش یعنی کمتر از یک ثانیه نیاز دارند، میتوانند بهراحتی از الاستیک سرچ در عملیات خود استفاده کنند. چراکه سرعت عملیات و پردازش در ELASTICSEARCH به کمتر از یک ثانیه میرسد. لذا میتواند وسیله خوبی برای استفاده در این عملیات و دیگر عملیات مشابه باشد.
کاربردهای پیشرفته ELASTICSEARCH
الاستیک سرچ دارای کاربردهای بسیار پیشرفتهای نیز میباشد که میتوان از آنها به نتفلیکس، ای بِی و والمارت اشاره کرد.
برای درک بهتر کارایی الاستیک سرچ ابتدا با مفهوم ELK آشنا شویم.
بسیاری از شرکتها دادهها را جمعآوری کرده و بر اساس پارامترهای عملکردی مختلف ذخیره میکنند. این کار توسط ELK صورت میگیرد. در اصل ELK برای تحلیل معیارهای مختلف استفاده میشود.
نتفلیکس کاربرد این ابزار را به دهها گره و نود افزایش داده، بهاینعلت که از الاستیک سرچ که زیربنای سیستم پیامرسانی نتفلیکس است استفاده مینماید. نتفلیکس همچنین از روشهای مختلف برای تحلیل نیازهای مشتریان و خدمات موردنیاز و لاگ های امنیتی استفاده میکند که این بر عهده سیستم ELK میباشد. این شرکت از الاستیک سرچ برای کاربردهای بسیاری ازجمله جابهجایی، مدلسازی و طراحی اکوسیستم خود استفاده کرده است. انعطافپذیری و سرعت بسیار بالای این فناوری کاربرد ELASTIC SEARCH را در این حوزهها و حوزههای زیر افزایش داده است:
EBAY
ای بِی که یکی از سایتهای بسیار بزرگ واقع در کالیفرنیای امریکا برای کسب درامد از طریق خریدار و فروش کالاها در سراسر جهان میباشد از الاستیک سرچ در پلتفرم خود بهعنوان محور اصلی استفاده کرده و در تجزیهوتحلیل متون تجاری خود از آن استفاده میکند.
WALMART
شرکت والمارت که یکی از شرکتهای مهم در زمینه خردهفروشی کالاها در جهان است از کاربردهای ELASTICSEARCH در شرکت خود بهره برده و از آن در زمینه شناسایی الگوهای خرید مشتریان و ردیابی معیارهای عملکرد فروشگاهی در زمان تعطیلات استفاده میکند.