ELK و الاستیک سرچ با بازخودی به شکل میلیونها دانلود و تعداد بالای زیرساخت قابل نصب از زمان انتشار مواجه بوده است. ELK پرمخاطبترین پلتفرم مدیریت رویدادها (Log Management) میباشد. با وجود اینکه تعداد زیادی برنامه نویس با این پلتفرم کار کردهاند، اما تعداد کمی تعریفی دقیق از قابلیتها و کارکرد به خصوص elasticsearch ارائه میکنند. بنابراین نخست به تعریف صحیح و اصولی elasticsearch خواهیم پرداخت و در ادامه تعریف ELK را بر اساس آن ارائه میکنیم.
الاستیک سرچ Elasticsearch چیست؟
الاستیک سرچ یک ابزار تحلیل و موتور جستجوی، توزیع شده (distributed) بر مبنای Apache Lucene است که به صورت یک کتابخانه (library) جستجو و فهرست سازی (index) در جاوا (Java) ایجاد شده است. الاستیک سرچ به شما امکان ایجاد کلاسترهای Apache Lucene و تکه کردن حجم انبوه دادهها (sharding) و جستجوی پیشرفته و تجمیع دادهها را میدهد. در کنار خدمات بیان شده، امکان High Availablity و محافظت از دادهها و پشتیبانگیری (backup) و بازگردانی (restore) را در اختیاز شما قرار میدهد.
بر اساس یکی از دسته بندیهای مشهور علوم داده، پایگاههای داده به شکل زیر دسته بندی میشوند:
الاستیک سرچ (elasticsearch) در این دسته بندی در میان پایگاههای داده Documents Databases قرار میگیرد
الاستیک سرچ انتخابی ایدهآل برای پلتفرمهای تجارت الکترونیک ، موتورهای سیستم های توصیه (recommendation engines)، سامانههای بررسی و تحلیل آماری بر مبنای سری زمانی، دادههای جغرافیایی انبوه میباشد. در ضمن الاستیک برای ایجاد سیستمهای پیشنهاد هوشمند و auto complete، عملیات زبانشناسی روی محتوا، سیستم تشخیص ناهنجاری و IoT کاربرد دارد.
کاربردهای متمایز الاستیک سرچ (Elasticsearch)
مهمترین کاربردهای و مزیتهای الاستیک سرچ عبارتند از:
- ایجاد و وزندهی کلمات و عبارت به منظور autocomplete
- full-text search: یکی از قابلیتهای منحصر به فرد الاستیک امکان جستجو روی انبوه متون و دریافت سریع نتیجه هست
- Did you mean: قابلیتی که روی اشتباهات املایی یا حتی کلمات نزدیک به کاربران پیشنهاد کلمات صحیح یا با نتایج بیشتر ارائه شود، در الاستیک سرچ وجود دارد
- Recommender: در الاستیک سرچ، Query ها و عبارات جستجو شده باقی مانده و بر اساس الگوریتمهای جستجو شده امکان فرآهم آوردن بستری برای نمایش محتوای توصیه شده (recommendation) وجود دارد
سایر توصیحات الاستیک سرچ (Elasticsearch)
نمونه ای از Query الاستیک به شکل زیر است:
همان طور که مشاهده میشود، Query های الاستیک امکان جستجو با شرایط خیلی مختلف و همچنین ترمهای بیشتری نسبت به پایگاه دادههای سنتی در اختیار قرار میدهد.
Query Sample: Must firstname Match hasan
در مرورگر کروم افزونهای به نام Elasticsearch Head برای بررسی ساختار و دادههای الاستیک سرچ وجود دارد. در این افزونه شما قادر هستید node های کلاستر، وضعیت shard و index ها را بررسی کنید. دادههای ذخیره شده را ببینید و روی آنها جستجو کنید. تصویری از افزونه Elasticsearch Head
مشابهسازی مفاهیم elasticsearch با پایگاه دادههای relational به شرح زیر است:
Elasticsearch | RDBMS(relational) |
Index | Database |
Mapping | Schema |
Type | Table |
Doc | Record (row) |
چگونه داده خود را روی الاستیک سرچ ثبت کنیم؟
در آدرس زیر نمونه کدی به منظور ثبت داده و ایجاد index و mapping با استفاده از PHP و console (CLI) ایجاد شده است.
https://github.com/shayand/elastic-search
ELK چیست؟
ELK مخفف شده سه کلمه Elasticseach، Logstash و Kibana است. این سه تکنولوژی متن باز (open source) در کنار هم بهترین تجربه سیستم ثبت رویداد را میدهند.Logstash رویدادها را به صورت برخط از تکنولوژیهای مختلف دریافت، پردازش و در الاستیک سرچ ذخیره میکند.Kibana امکان تحلیل دادههای ذخیره شده در الاستیک و ایجاد داشبورد و نمودارهای مختلف را داراست. ELK پرطرفدار شد زیرا این مجموعه ابزارها قویترین پوشش ثبت و تحلیل لاگها را در اختیار برنامه نویسان و DevOps ها قرار داد.
Kibana چیست؟
kibana یک پنل web base است که با استفاده از آن میتوان، مکانیزمهایی مثل ایجاد گزارش، ایجاد نوتیفیکشن، مانیتورینگ بخشهای مختلف رویدادها و ... را در اختیار داشت. دادههای kibana از طریق beats جمع آوری شده و با logstash به elasticsearch منتقل میشود سپس kibana امکان رصد و مانیتورینگ را میدهند.تصویری از پنل kibana در ادامه
انتقال تجربه الاستیک سرچ (elaticsearch)
در یکی از پلتفرمهای مطالعه و فروش کتاب الکترونیک در نسخه جدید اپلیکیشن، الاستیک سرچ (elasticsearch)، به عنوان پایگاه داده اصلی مرجع اپلیکیشن در نظر گرفته شده بود. با استرس تست، سقف تعداد کاربران که ماشین الاستیک توانایی پاسخگویی به آن را داشت، 500 کاربر در ثانیه بود. نمودار استرس تست، الاستیک با یک node ترسیم شده توسط apache jmeter:
لازم به ذکر است با افزایش 50 عددی تعداد کاربران و رسیدن آن به عدد 550 سرویس الاستیک مذکور از دسترس خارج میشد. در این پروژه نیاز به پاسخگویی به 2000 تا 3000 کاربرهمزمان در برخی بازههای زمانی بود. به این منظور تعداد node ها را از یک ماشین به سه ماشین افزایش دادیم. با این افزایش تعداد node ها امکان پاسخگویی به حدود 11000 کاربر به صورت همزمان فرآهم شد. نمودار الاستیک سرچ 3 node ترسیم شده با apache jmeter
دیدگاهها
پیوند ثابت
پیوند ثابتافزودن دیدگاه جدید