این موتور جستجو از ساختاری مبتنی بر اسناد به جای جداول استفاده کرده و از Rest Api برای ذخیره و جستجوی دادهها بهره میگیرد و بخاطر ماهیت توزیعشده، سرعت و مقیاس پذیریاش شناخته میشود. جزء مرکزی Elastic Stack است. با زبان برنامه نویسی جاوا ساخته شده است که Elasticsearch را قادر می سازد تا بر روی سیستم عامل های مختلف اجرا شود و این امکان را برای کاربران فراهم می کند تا حجم بسیار زیادی از داده ها را با سرعت بسیار بالا جستجو کنند.
الستیکسرچ در کنار لاگ استش(Logstash)، کیبانا (Kibana) و در حال حاضر هم بیتها (Beats) چهار محصول که به عنوان یک راهحل یکپارچه طراحی شدهاند که آن را «الستیک استک» مینامند که برای کمک به کاربران برای گرفتن داده ها از هر نوع منبع و در هر قالبی و جستجو، تجزیه و تحلیل و تجسم آن داده ها در زمان واقعی طراحی شده است.
سرفصل مطالب
برای چه مواردی استفاده می شود؟
سرعت و مقیاس پذیری الستیک سرچ و توانایی آن در ایندکس کردن انواع محتوا به این معنی است که می توان از آن برای موارد مختلف استفاده کرد:
- جستجوی برنامه
- جستجوی وب سایت
- جستجوی سازمانی
- تجزیه و تحلیل اطلاعات ورودی
- معیارهای زیرساخت و نظارت بر کانتینر
- نظارت بر عملکرد برنامه
- تجزیه و تحلیل و تجسم داده های جغرافیایی
- تجزیه و تحلیل امنیتی
- تجزیه و تحلیل تجاری
الاستیک سرچ چگونه کار می کند؟
دادههای خام از منابع مختلفی از جمله گزارشها، معیارهای سیستم و برنامههای کاربردی وب به الاستیک سرچ جریان مییابند. جذب داده (Data ingestion) فرآیندی است که طی آن این داده های خام قبل از اینکه در الاستیک سرچ نمایه شوند، تجزیه، نرمال سازی و غنی می شوند. پس از ایندکس شدن در Elasticsearch، کاربران میتوانند query های پیچیده را در برابر دادههای خود اجرا کنند و از aggregations برای بازیابی خلاصههای پیچیده از داده های خود استفاده کنند. از Kibana، کاربران می توانند تجسم های قدرتمندی از داده های خود ایجاد کنند، داشبوردها را به اشتراک بگذارند، و Elastic Stack را مدیریت کنند.
شاخص(Index) الستیک سرچ چیست؟
شاخص Elasticsearch مجموعهای از اسنادی است که به یکدیگر مرتبط هستند. Elasticsearch دادهها را به عنوان اسناد JSON ذخیره میکند. هر سند مجموعه ای از کلیدها (نام فیلدها یا ویژگی ها) را با مقادیر متناظر آنها (رشتهها، اعداد، Booleanها، تاریخها، آرایههای حاوی مقادیر، موقعیتهای جغرافیایی یا انواع دیگر داده ها) مرتبط می کند.
Elasticsearch از یک ساختار دادهای به نام شاخص معکوس استفاده میکند که به گونه ای طراحی شده است که امکان جستجوی کامل متن را بسیار سریع را فراهم میکند. یک شاخص معکوس، هر کلمه منحصر به فردی را که در هر سندی ظاهر می شود لیست میکند و همه اسنادی را که کلمه در آنها وجود دارد را شناسایی میکند.
در طول فرآیند شاخصگذاری، Elasticsearch اسناد را ذخیره میکند و یک نمایه معکوس ایجاد میکند تا دادههای سند را در زمان واقعی قابل جستجو کند. نمایهسازی با API شاخص شروع می شود، که از طریق آن می توانید یک سند JSON را در یک شاخص خاص اضافه یا به روزرسانی کنید.
گره (Node)
گره به یک نمونه از سرور Elasticsearch گفته میشود که دادهها را ذخیره میکند. یک گره دارای نام است و با آن شناسایی میشود. به طور پیشفرض در زمان شروع، یک شناسهی منحصر به فرد تصادفی به گره تخصیص داده میشود. این نام برای اهداف اجرایی مورد استفاده قرار میگیرد.
خوشه (Cluster)
یک خوشه مجموعهای از یک یا چند گره یا همان سرور است که با هم کار میکنند. خوشه تمامی دادهها را نگه میدارد و امکان جستجوی آسان را در تمام گرهها فراهم میکند و موجب کنترل آسان اطلاعات برای هر گره میشود. همانند یک گره، یک خوشه نیز با نام منحصر به فرد مشخص میشود و به طور پیشفرض، نامش “elasticsearch” است. برای اتصال چند گره به یک خوشه از نام خوشه استفاده میشود و به همین دلیل است که نام خوشه بسیار مهم است.
Shards
ذخیرهی حجم زیادی از اطلاعات میتواند فراتر از تواناییهای یک سرور واحد باشد. برای حل این مشکل، Elasticsearch اجازه میدهد تا شاخص (Index) را به چند بخش تقسیم کرد که shards نامیده میشوند. تعداد بخشهای مورد نیاز میتواند در حین ایجاد یک شاخص مشخص شود. از آنجایی که دادهها روی یک shard نوشته میشوند، در فواصل منظم در بخشهای تغییرناپذیر Lucene روی دیسک منتشر میشوند، و در این زمان است که برای جستجو در دسترس میشود. به این عمل تازه سازی میگویند. هر شارد درون خودش به عنوان یک ایندکس مستقل و کامل عمل میکند که قابل هاست شدن روی هر نود درون کلاستر است. با توزیع داکیومنتها در ایندکسی که در بین چند شارد قرار دارد، میتوان این شاردها را در بین نودهای چندگانه توزیع کرد. الستیک سرچ با این روش از افزونگی (redundancy) اطمینان مییابد که باعث محافظت در برابر خرابیهای نرم افزاری و افزایش ظرفیت سرچ با اضافه شدن نودها به کلاستر میشود.
Replicas
برای جلوگیری از هر نوع خطای تصادفی، مانند اشتراکگذاری یک گرهی آفلاین، Elasticsearch مفهومی شبیه به کپی را ارائه میدهد. Replicas در اصل فقط یک کپی دیگر از یک shard است و میتواند برای queries به عنوان shard اصلی مورد استفاده قرار گیرد.
Logstash برای چه مواردی استفاده می شود؟
Logstash، یکی از محصولات اصلی الاستیک است که برای جمعآوری و پردازش دادهها و ارسال آن به Elasticsearch استفاده میشود. Logstash یک خط لوله پردازش داده مبتنی بر سرور است که به شما امکان می دهد دادهها را از چندین منبع به طور همزمان دریافت کنید و قبل از ایندکس شدن در Elasticsearch آن را غنی و تبدیل کنید.
Kibana برای چه مواردی استفاده می شود؟
Kibana یک ابزار تجسم و مدیریت داده برای Elasticsearch است که نمودار هیستوگرام، نمودار خطی، نمودار دایرهای و نقشه ها را ارائه میدهد. Kibana همچنین شامل برنامههای پیشرفتهای مانند Canvas است که به کاربران اجازه می دهد تا برای تجسم داده های مکانی، اینفوگرافیکهای پویا را به صورت سفارشی و بر اساس دادههای خود ایجاد کنند.
چرا از Elasticsearch استفاده کنیم؟
سریع است، از آنجایی که Elasticsearch بر روی Lucene ساخته شده است، در جستجوی متن کامل برتر است. Elasticsearch همچنین یک پلت فرم جستجوی بلادرنگ است، به این معنی است که میتواند به طور پیوسته یک وضعیت جدید از اسناد قابل جستجو را برنامه ریزی کند. بنابراین میزان زمان از لحظه جستجوی سند توسط کاربر تا لجظهس اعلام نتایج کم و ناچیز است – معمولاً یک ثانیه. در نتیجه، Elasticsearch برای موارد استفاده حساس به زمان مانند تجزیه و تحلیل امنیتی و نظارت بر زیرساخت مناسب است.
ماهیت توزیع شده. اسناد ذخیره شده در Elasticsearch در کانتینرهای مختلفی به نام Shard توزیع می شوند که در صورت خرابی سخت افزار، استفاده میشوند. ماهیت توزیع شده Elasticsearch به آن اجازه می دهد تا به صدها (یا حتی هزاران) سرور گسترش یابد و پتابایت داده را مدیریت کند.
مقیاس پذیری. یعنی با افزایش حجم دادهها، عملکرد همچنان بسیار ساده مانده و نتایج قابلاطمینان است. این یک ویژگی بسیار مهم است که به سادهسازی معماریهای پیچیده و صرفهجویی در زمان در طول اجرای پروژهها کمک میکند.
بهینه بودن در کار با اسناد. Elasticsearch ماهیت پیچیدهی دنیای واقعی را به عنوان اسناد JSON ساختاربندی کرده و تمام مفاهیم را به طور پیشفرض در یک شاخص (index) جمعآوری میکند تا بتوان دادهها را جستجو کرد. از آنجا که هیچ ردیف و ستون دادهای وجود ندارد، میتوان به راحتی جستجوی متن کامل را انجام داد.
رابط های کاربری. که برای دسترسی سریع به نظارت بر عملکرد برنامه (APM)، گزارش ها و داده های معیارهای زیرساخت ارائه می دهد.
چندزبانه. یکی از ویژگیهای Elasticsearch این است که چندزبانه است. این موتور از نوشتارهای گستردهای در زبانهای مختلف مانند عربی، برزیلی، چینی، انگلیسی، فرانسوی، کرهای و … پشتیبانی میکند.
تکمیل خودکار. Elasticsearch با پیشبینی کلمه (حتی اگر شامل تعداد بسیار کمی از کاراکترها باشد)، تعامل انسان و رایانه را سرعت میبخشد.
الاستیک سرچ از چه زبان های برنامه نویسی پشتیبانی می کند؟
Elasticsearch از زبان های مختلفی پشتیبانی میکند و مشتریان رسمی برای موارد زیر در دسترس هستند:
Java
JavaScript (Node.js)
Go
.NET (C#)
PHP
Perl
Python
Ruby
نتیجه
در این مقاله، چیستی الستیک سرچ، عملکرد و کاربردش را بررسی کردیم. به طور خلاصه، الستیک سرچ در اصل موتور جستجویی سریع و قابل توسعه در مرکز اکوسیستمی از ابزارهای مکمل است که در کنار هم کارکردهای مختلفی از جمله سرچ، تحلیل، پردازش و ذخیره سازی داده را بر عهده دارند.