تا به حال پروژه ی لاراول خودتون رو به الستیک سرچ متصل کردید؟
اگر نه، باید بدونید روش های مختلفی برای این کار وجود داره و اگر آره شاید روش شما روش مناسبی نیست!
در ادامه پست باهم ۳ روش استفاده از الستیک سرچ رو می بینیم!
اما ابتدا برای کسایی که از الستیک سرچ استفاده نکردند و نمیدونند که اصلا به اون نیاز دارند یا نه و یا فکر میکنند که یادگیری الستیک سرچ خیلی چیز جدید و ترسناکی هست باید یه سری مطالب رو بگم.
Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.
خوب به زبان ساده یعنی یک پروژه ای هست که دیتا های شما رو تحت عنوان داکیومنت داخل یک سری ایندکس روی RAM نگه میداره و از طریق api هایی که در اختیار شما قرار میده اجازه میده که با استفاده از سینتکس json روی اون ها کوئری بزنید و خیلی خیلی سریع و در حد real time دیتا ها رو بازیابی کنید.
هرجایی که نیاز دارید با حجم زیادی از داده کار کنید و اقدام به ذخیره سازی اونها کنید و برای شما پردازش اون داده مثلا برای نمایش نمودارها و گزارش های مختلف یا سرچ های خیلی سریع و پیچیده مهم بود الستیک سرچ میتونه کاربرد داشته باشه.
زمانی که تصمیم گرفتیم با توجه به نیاز پیش اومده از الستیک سرچ استفاده کنیم کلی سوال و چالش مطرح میشه!
چه دیتا هایی رو روی الستیک سرچ نگه دارم؟
دیتا ها رو روی دیتابیس دیگری هم نگه دارم یا فقط الستیک سرچ؟
چطوی دیتا رو بین دیتابیس اصلی و الستیک سرچ با تغییرات لحظه ای سینک نگه دارم؟
اگر تغییرات دیتا ها زیاد بود ارتباط بین سرویس و الستیک سرچ به چه صورتی باشه که به مشکل نخورم؟
چطوری به الستیک سرچ متصل بشم و api ها رو صدا بزنم؟
کوئری های الستیک سرچ رو که به صورت json هست چطوری و کجای پروژه بسازم که نگه داریش راحت باشه؟
آیا راهی وجود داره که این کوئری های بعضا زیاد و تودر تو رو داخل کد نداشته باشیم؟
وکلی سوالی و چالش دیگه ...
ما به طور خاص قصد داریم با بررسی چند روش و مقایسه اونها باهم این چالش ها رو تا حدی برطرف کنیم :)
۳ روش رو برای اتصال به الستیک سرچ در مجموع میشه استفاده کرد:
ساده ترین روش اتصال به الستیک سرچ که در تمام پروژه های پی اچ پی میشه استفاده کرد روش Low Level Client هست. توی این روش میشه با استفاده از composer اقدام به نصب پکیج official خود elastic برای php کرد و یا از پکیج Elastica استفاده کنیم و صرفا صدا زدن api های الستیکمون رو از طریق اون انجام بدیم و با دانش خودمون از الستیک سرچ باید اقدام به نوشتن انواع کوئری های لازم برای انجام عملیات CRUD روی ایندکس هامون کنیم.
همونطوری که مشخص هست نسبت به روش قبلی برتری داره و اون این هستش که دیگه نیاز نیست خودمون با استفاده از آرایه های تو در توی پی اچ پی و تبدیل اون به json اقدام به کوئری نویسی کنیم و این کار از طریق پکیج هایی که نصب کردیم و استفاده میکنیم انجام میشه. اما چطوری؟
به سادگی استفاده از Model های لاراول و متدهای Eloquent میتونید به همون صورت اقدام به انجام عملیات های مختلف روی ایندکس و داکیومنت های خودتون کنید و یا از کامند های لاراولی پکیج استفاده کنید.
این روش که استفاده از پکیج Scout هست علاوه بر مزیت های روش High Level Client به ما این امکان رو میده که با انجام یک سری کانفیگ ها و یک سری optimization هایی که انجام میدیم اقدام به automatic کردن sync بودن داکیومنت های خودمون کنیم!
اما باید بدونیم که Scout به صورت پیش فرض برای Algolia نوشته شده و باید از driver دیگه ای که برای Elastic Search هست استفاده کنیم.
مطالبی که در بالا گفته شد بخشی از دوره استفاده از الستیک سرچ در لاراول هستش که توی اون سعی شده ضمن معرفی ELK Stack اقدام به بررسی، نصب و استفاده از روش های مختلف کنیم که در این پست به اونها اشاره کردیم.
هر کدوم از روش ها ابتدا معرفی و بعد از نصب و کانفیگ اونها از امکانات اصلی هر کدوم به صورت عملی توی لاراول استفاده میشه و باهم خروجی ها رو توی Kibana هم میبینیم و در پایان با توجه به نیاز پروژه خودتون می تونید از هرکدوم استفاده کیند.
پیش نیاز دوره دانش کمی از لاراول هست و حتی بدون آشنایی با الستیک سرچ با توجه به روشی که گفته میشه و مثال هایی که زده میشه می تونید کارهای مقدماتی اون مثل ساخت ایندکس، Sync نگه داشتن داکیومنت ها، CRUD روی اون ها و جستجو های ابتدایی رو انجام بدید.
ویدیو معرفی دوره استفاده از الستیک سرچ در لاراول
در آخر هم دمتون گرم که این پست رو خوندید دوستان:)
امیدوارم مفید بوده باشه