Ali Zeiynali
Ali Zeiynali
خواندن ۳ دقیقه·۱ سال پیش

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

Elasticsearch DATABASE
Elasticsearch DATABASE


Elasticsearch چیست؟

الاستیک سرچ، یک دیتابیس 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://virgool.io/@Ali_Z/%D9%87%D8%B1-%D8%A2%D9%86%DA%86%D9%87-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%DB%8C%DA%A9-%D8%B3%D8%B1%DA%86-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D8%AF-2-eevquc05knpk


برنامه نویسیelasticsearchelastickibanaآموزش رایگان
یک برنامه نویس (نه چندان) نویسنده؟ https://coffeete.ir/Azeiynali
شاید از این پست‌ها خوشتان بیاید