الاستیک سرچ (Elasticsearch) چیست؟
من ارسلان میربزرگی در این مقاله میخواهم تا با شما در مورد اینکه Elasticsearch چیست و چه کاری انجام میدهد، صحبت کنم. همه کسانی که با برنامه نویسی سروکار دارند، حتما اسم Elasticsearch را شنیدهاند و یا با آن کار کردهاند. Elasticsearch یا الاستیک سرچ، یک موتور جستجوی اوپن سورس است که توسط شرکت آپاچی و بر اساس Apache Lucene ساخته شده است. مبنای الاستیک سرچ، معماری Rest است.
موارد استفاده از الاستیک سرچ بیشتر در زمینه های جستجوی Full-text، تحلیل لاگ، تحلیل تجاری، هوش امنیتی و هوش عملیاتی است و از سال 2010، تقریبا مشهورترین موتور جستجو به حساب میآید و از رقبای خود پیشی گرفته است.
الاستیک سرچ (Elasticsearch) چگونه کار میکند؟
شما توسط API و ابزارهای مربوط به تفسیر لاگ مانند Amazon kinesis Firehose و logstash و یا موتور جمع آوری داده، قادر هستید که اطلاعات خودتان را به صورت فایل و یا فایل های JSON به سمت الاستیک سرچ ارسال کنید. در این حالت Elasticsearch فایل اصلی را ذخیره میکند و در ایندکس کلاستر مربوط به این فایل، یک کلید قابل جستجو را اضافه میکند. در نتیجه شما قادر خواهید بود تا این فایل را با APIکه برای Elasticsearch ساخته شده است، جستجو کنید. البته میتوانید برای این کار از Kibanaهم استفاده کنید.
آیا استفاده از Elasticsearch هزینه ای دارد؟
پاسخ خیر است. Elasticsearch یک نرم افزار رایگان و اوپن سورس است و شما میتوانید آن را به صورت مستقیم در محل و یا اینکه بر روی سرویس Amazon Elasticsearch و یا Amazon EC2 اجرا کنید. اگر شما الاستیک سرچ را بر روی Amazon EC2 و یا در محل اجرا کنید، نصب الاستیک سرچ و سایر نرم افزارهای جانبی آن و فراهم کردن زیرساخت و همچنین مدیریت کلاستر، با شما است.
اما اگر برای این کار از سرویس Amazon Elasticsearch استفاده کنید، دیگر مسئولیتی با شما نیست چرا که این سرویس کاملا مدیریت شده است و شما نیازی به نگرانی در رابطه با مواردی مانند بسته بندی نرم افزار، آماده سازی سخت افزار، بازیابی سیستم پس از هر شکست و پشتیبانی و مانیتورینگ نخواهید داشت.
مزایای استفاده از Elasticsearch
کاهش زمان پروژه
به طور کلی APIهای بر پایه REST ساده و دارای رابط کاربری HTTP ساده را ارائه میکند. علاوه بر آن، این موتور جستجو از فایل های رایگان JSON استفاده میکند. این ویژگی باعث کاهش زمان پروژهای که از الاستیک سرچ میشود و میتوان به سرعت برنامههای کاربردی را با آن ایجاد کرد.
کارایی بالا
این به آن معنی است که میتواند مقادیر زیادی از دادهها را به صورت موازی پردازش کرده و سریعا مناسبترین جواب را برای جستجوی شما نمایش دهد. همانطور که در بالاتر توضیح دادیم، Kibana که یک ابزار معروف در گزارش دهی و تصویرسازی است، به طور یکپارچه ای با Elasticsearch مورد استفاده قرار میگیرد. البته الاستیک سرچ با سرویسهای دیگری مانند Logstashو Beats نیز در ارتباط است و توسط آنها میتوانید به سادگی، کدهای اصلی خودتان را تبدیل کنید و در کلاستر مربوط به الاستیک سرچ خود ذخیره کنید.
البته شما علاوه بر 3 سرویسی که ذکر کردیم، میتوانید از سایر پلاگینهای اوپن سورس الاستیک سرچ مانند مفسرهای زبان یا پیشنهاد دهندهها نیز برای افزایش کارایی برنامه هایتان استفاده کنید.
عملیات Real Time
استفاده از Elasticsearch سرعت زیادی را برای شما به ارمغان میآورد. عملیاتها در الاستیک سرچ بسیار سریع و در کمتر از یک ثانیه انجام میشود. از این استفاده از الاستیک سرچ برای نرم افزارهای مانیتورینگ و یا تست و خطایابی بسیار کارآمد خواهد بود.
توسعه آسان برنامه
به دلیل پشتیبانی Elasticsearchاز زبانهای فراوانی مانند پایتون، جاوا، جاوا اسکریپت، PHP، Ruby ، Node.jsو ...، توسعه سادهتری نسبت به سایر برنامههای مشابه خود دارد.
کاربردهای Elasticsearch
کاربردهای Elasticsearch هر روز در حال اضافه شدن و تغییر است اما 5 مورد از اصلی ترین کاربردهای آن عبارتند از :
تحلیل لاگ و لاگ گیری
برای کسانی که با الاستیک سرچ کار کردهاند، اصطلاح تحلیل لاگ و لاگ گیری بسیار قابل درک است. ابزارهایی که همراه با Elasticsearch ارائه میشوند و به صورت یکپارچه با آن اجرا میشوند، الاستیک سرچ را به یکی از آسان ترین تکنیکهای لاگ گیری مبدل کردهاند.
خیلی از افراد از این ویژگی برای فعال کردن لاگ مربوط به پروژه خود بهره میبرند. شما با استفاده از Elasticsearch از امکانات زیادی مانند Beats ، Ingest Node و Logstash که به منظور جمع آوری دادهها از هر قسمت و ایندکس گذاری آنها استفاده میشود، بهره مند خواهید شد. از طرفی، ابزارهایی مانند Kibana هم به شما امکان ساخت داشبوردهای قدرتمند و همچنین تجزیه و تحلیل را میدهند. این در حالی است که Curator امکان گذاشتن عملیات نگهداری بر روی حالت خودکار را میدهد.
جمع آوری و ترکیب داده های عمومی
دارای ابزارهای مختلفی به منظور جمع آوری و همینطور ایندکس گذاری ساده دادههای راه دور است. از طرفی Elasticsearch به علت نداشتن یک تم پیچیده و سخت گیرانه که ویژگی مشترک تمامی روشهای ذخیره سازه غیر رابطهای که بر پایه ذخیره اسناد است، توانایی و انعطاف لازم برای بارگذاری منابع متفاوت داده و همچنین نگهداری و قابل جستجو کردن این منابع را دارد.
جستجوی Full text
جستجوی Full Text یکی از مهم ترین توانایی های Elasticsearch است. کاربرانی که از این قابلیت الاستیک سرچ استفاده میکنند، نتایج بهتری را در مقایسه با جستجویهای قدیمی دریافت میکنند. در بحث مربوط به تشخیص Fraud، کاربران ثابت کردند که تواناییهای الاستیک سرچ در فرایند جستجو، انعطاف زیادی دارد و شامل ابزارهایی است که فرایند جستجو را ساده تر میکند. از طرفی Elasticsearch، کوئری DSL مخصوص به خود را دارد. علاوه بر آن دارای توانایی تصحیح و ویرایش خودکار متن است و به طور مثال، اشتباه تایپی موجود در متن را به صورت آیا منظور شما “حدس صحیح خودش” است؟ نشان میدهد.
معیارها و داده های برنامه
در دادههای سری زمانی مثل رویدادهای برنامه و یا معیارها، Elasticsearch قوی عمل میکند. این حد از کارایی به لطف سرویس Beats انجام میشود. با استفاده از این سرویس، امکان جمع آوری آسان دادهها به منظور جستجوهای مشترک را خواهید داشت. الاستیک سرچ همچنین امکان اضافه کردن هر کامپوننتی را که شما بر اساس معیارهای خود به آن نیاز دارید را به شما میدهد.
داده های تصویر سازی
برنامه Kibana ، صدها امکان برای ترسیم چارت، TimeLion برای دادههای مربوط به سری زمانی و سرویس tile برای اطلاعات جغرافیایی را دارد و یک ابزار تصویر سازی فوق العاده قدرتمند و ساده است. برای تک تک این موارد در Kibana، کامپوننتهای تصویری مختلفی وجود دارد. ترکیب Kibanaو Elasticsearch برای افرادی که ابزاری کارآمد برای تصویرسازی دادهها نیاز دارند، بسیار مفید است.
و در آخر
مواردی که در پاراگراف قبل به آنها اشاره کردیم، پر استفادهترین کاربردهای Elasticsearch هستند. با Elasticsearch و سایر ابزارهای Elastic Stack و ادغام آنها، میتوانید نتیجه بسیار بیشتری را دریافت کنید. یکی از بزرگترین مزیتهای استفاده از الاستیک سرچ، ارتقا ابزارها و فناوریهایی که از آنها استفاده میکنید است بدون اینکه نیازی به اضافه کردن دیتابیس جدید داشته باشید.
منبع: https://mirbozorgi.com
مطلبی دیگر از این انتشارات
NodeJS چیست؟
مطلبی دیگر از این انتشارات
یک فنجان جاوا - دیزاین پترن ها - Object Pool
مطلبی دیگر از این انتشارات
برنامه نویسی شی گرا؛ سرآغاز و تاریخچه پیدایش