Hadi Varposhti
Hadi Varposhti
خواندن ۲ دقیقه·۳ سال پیش

مپینیگ در الستیک سرچ

همونطور که قبلا توضیح دادم الستیک سرچ یک موتور جستجو که از معماری nosql برای مدیریت ذخیره سازی داده های داخلش استفاده میکنه. در حالت کلی الستیک از مفهومی به نام مپینیگ (Mapping) کمک میگیره تا بتونه داده هایی رو که ذخیره میکنه نوع داده اونها رو تشخیص بده.

در تعریفی که از مفهوم کلمه مپینیگ در وبسایت الستیک اومده این کلمه اینطوری تعریف میشه:

Mapping is the process of defining how a document, and the fields it contains, are stored and indexed.

مپینیگ فرایندیست برای پردازش نحوه ایجاد داکیومنت ها، فیلد ها و ذخیره سازی آن

هر داکیومنت درون الستیک شامل فیلدهایست که هرکدوم نوع داده خودشون رو دارا هستند.وقتی که داده هاتون رو ذخیره میکنین درواقع دارین از مفهوم مپینگ استفاده می کنین که شامل لیست فیلدهایی که مرتبط هستن با یک داکیومنت. درکنار مفهوم مپینگ باید با مفهومی به نام متادیتا مانند _source هم آشنا بشین که نحوه مدیریت اون داکیومنت رو سفارشی سازی میکنه.

بصورت کلی مپینیگ به دو مدل تقسیم میشه:

  • dynamic mapping
  • explicit mapping

داینامیک مپینیگ، به شما امکان جستجوی همزمان بر روی داده هاتون در هنگام ساخته شدن ایندکس ها رو میده. در داینامیک مپینیگ نوع داده هر فیلد توسط خود الستیک سرچ مشخص میشه. در الستیک سرچ امکان ایجاد داده های تو درتو وجود داره، اینرو هم باید اضافه کنم فیلد در هنگام ذخیره سازی در بالای صف قرار میگیرند.

نکته ای که باید به این قسمت اضافه کنم اینه که در داینامیک میپینگ شما میتونین با کمک condtions در الستیک سرچ فیلد های مورد نظرتون رو بصورت داینامیک به ایندکس اضافه کنین.

اکسپلیسیت مپینیگ، به شما این امکان رو میده تا خودتون نوع مپینگ، اینکه چطور میخواین دادهاتون ذخیره بشن رو بصورت دقیق مشخص کنین مثل اینکه:

  • با کدوم فیلد های string باید مثل text رفتار بشه
  • کدوم فیلدها شامل عدد، تاریخ و یا ...
  • فرمت ذخیره سازی برای date
  • و سفارشی سازی های شخصی

برای مدیریت منابع در این مدل هم شما میتونین از قابلیت runtime fields استفاده کنین. runtime fields به شما این امکان رو میده تا بدون اپدیت کردن داده های جدید رو ذخیره کنین، همچنین برای پیوستگی ساختن ایندکس ها، مدیریت منابع و پرفورمنس بهتر از این قابلیت کمک بگیرین.

نتیجه گیری :

در الستیک سرچ به قطعیت میشه گفت که مفهوم مپینیگ یکی از مهمترین مفاهیم به حساب میاد چرا که تعیین کننده بسیاری از موارد در هنگام ذخیره سازی داده هاست.

بصورت پیش فرض زمانی که شما داده هاتون رو میخواین داخل الستیک سرچ ذخیره کنین، الستیک سرچ از داینامیک مپینیگ استفاده میکنه برای همین شما ممکن با مستقیما باهاش برخورد نداشته باشین اما یادتون باشه که مپینیگ دستتون برای بر طرف کردن خیلی از نیازهاتون باز میزاره.






dynamic mappingexplicit mappingelastic searchnosql
سعی میکنم چیزی رو بنویسم که نیاز آدما باشه
شاید از این پست‌ها خوشتان بیاید