هر آنچه باید در مورد دیتابیس Elasticsearch بدانید - 1

Elasticsearch DATABASEElasticsearch چیست؟الاستیک سرچ، یک دیتابیس noSQL قدرتمند است که بسیاری از وب سایت ها از آن استفاده میکنند.این دیتابیس بر پایه موتور متن باز Apache Lucene ساخته شده یک موتور قدرتمند برای تحلیل و جستجوی موارد است، این موتور دارای یک زبان برنامه نویسی بسیار پیچیده و نصب خیلی سخت است، به همین دلیل elastic، کار با این موتور را راحت کردهالاستیک سرچ داده ها را به صورت json ذخیره میکند، برای ارتباط با الاستیک، شما فقط به request زدن احتیاج دارید، هر ریکوئست دارای یک بدنه است که درخواست ها در آن ارسال و دریافت می گرددندارتباط با الاستیک به صورت فقط ارسال داده، کمی سخت است و الاستیک برای این مشکل راه حلی دارد، الاستیک سرچ دارای یک IDE است به نام Kibana که کار با الاستیک را راحت تر کرده.نصب Elasticsearchبرای نصب الاستیک به سایت elastic مراجعه کنیدما با نسخه 7.17 کار میکنیم، برای نصب این نسخه، بعد از دانلود فایل zip آن را در محل مطمئنی استخراج کرده و سپس پوشه را باز کنید و وارد دایرکتوری bin شوید و فایل الاستیک سرچ.bat را اجرا کنیدبرای نصب کیبانا هم همین رویه را دنبال کنید، البته با فایل kibana.batدقت کنید که نسخه elastic تون باید با نسخه کیباناتون همخوانی داشته باشهضمنا من از افزونه Elasticsearch for VSCode هم استفاده میکنم که قابلیت خاصی نداره ولی میتونید با نوشتن کد های ارسال درخواست در یک فایل .es اون رو اجرا کنید و با الاستیک سرچتون ارتباط برقرار کنید.پیش آمادگیالاستیک سرچ برعکس دیتابیس SQL یا SQLite که SQL ای هستن، SQl ای نیست و noSQL ای هست (چقدر SQL گفتم :) )دیتابیس های noSQL به صورت column ای پیش نمیرن، شما اگر بخواین در SQL یک کالمن اضافه کنید، باید کلی باهاش بحث کنید(اونایی که تاحالا بدون اون کالمن بودن رو باید چی کار کنه، یا اگر به یک فایل دیگه هم وصل بشه و اون فایل همین کالمن رو داشته باشه چی و... البته این آخری همیشه پیش نمیاد)ولی در دیتابیس های NoSQL شما نیازی به تعریف کالمن هاتون در اول ساخت ایندکس(در دیتابیس elasticsearch به جدول Index میگن) ندارین، هنگام ارسال داده، میتونین ستون های جدید بدین یا بعضی ستون هارو ندین، هیچ تفاوتی نداره و جیک هم نمیزنهاما مشکلی که این نوع دیتابیس(NoSQL) داره، اینه که برای ذخیره اطلاعات، از ارتباطات استفاده نمیکنه، یعنی شما نمیتونید چیزی رو به چیز دیگری ارتباط بدین، که این میتونه برای بعضی کار ها و app ها مشکل ایجاد کنه که برای اون میتونید از SQL یا SQLite استفاده کنینهمچنین الاستیک سرچ کمی سرش شلوغه و نمیشه در نگه داری اطلاعات بهش اعتماد کرد، برای مثال از هر صد هزار درخواستی که بهش ارسال میشه، یکی دوتاشو ذخیره نمیکنهساخت Indexحالا چطور یک index بسازیم تا بتونیم اطلاعاتمون رو توش ذخیره کنیم؟راحت ترین روش ساخت Index اینه:PUT first_indexتمومه!شما اولین ایندکس خودتون رو ساختید!البته الاستیک سرچ قابلیت های خیلی خیلی خیلی زیادی برای ساخت ایندکس ارائه میده که خیلی هاش به درد میخورن و خیلی هاش هرگز استفاده نمیشهبرای مثال میتونین برای هر column یک نام مستعار بذارین که به جای صدا زدن اون ایندکس، از نام مستعارش استفاده بکنیدحالا بیاین از تنظیمات بیشتری استفاده کنیم:PUT second_index { &quotmappings&quot: { &quotproperties&quot: { &quotusername&quot: { &quottype&quot: &quottext&quot }, &quotage&quot: { &quottype&quot: &quotinteger&quot } }} ما در اینجا یک ایندکس ساختیم که دارای فیلد های نام کاربری و سن است، این کار اختیاری است و نیازی به تعریف این فیلد ها به این حالت نیست، مگر اینکه بخواهیم در بدنه فیلد ها تنظیمات خاصی را اعمال کنیم که این را هم در مقاله های بعدی خواهیم دید. برای این جلسه کافیهتوی جلسه بعدی، کد های بیشتری رو بررسی میکنیماینم آموزش رایگان خوبیه که زیرنویس فارسی هم داره https://en.git.ir/linkedin-elasticsearch-essential-training/