به نام خدا
تمپلیت راهی است که به الستیک می گوید تنظیمات و پیکربندی های یک اندیس را هنگام ساختن آن چگونه در نظر بگیرد. در واقع پیکربندی از پیش تعریف شده ای را برای اندیس هایی که ساخته می شوند در نظر می گیرد.
دو نوع تمپلیت وجود دارد:
1) index template
2) component template
تمپلیت ها قابلیت ارث بری ندارند. بعنی اگر قرار باشد تمپلیت جدیدی بسازیم که کمی با تمپلیت قبلی متفاوت است باید دوباره همه ی ویژگی های تمپلیت جدید را تعریف کنیم. از این رو می توانیم قسمت های مختلف یک index template را با استفاده از component template ها تعریف کنیم و از آن ها به صورت مشترک در index template های مختلف استفاده کنیم.
یک اندیس شامل ویژگی های alias، mapping و setting است.
در قسمت mapping مشخصات و ویژگی های فیلدها یا متغیرهای runtime که نیاز است را می توان تعریف کرد. در بخش setting تنظیماتی مثل تعداد shard های primary و replicas را برای اندیس می توان مشخص نمود و در نهایت از alias می توان برای ساخت نام های دیگر این اندیس استفاده کرد.
به مثالی که در زیر آمده توجه نمایید:
1- ساخت یک component template برای بخش setting ها :
در این قسمت برای تنظیمات، یک primary shard و دوتا replica shard در نظر گرفته ایم.
2- ساخت یک component template برای بخش mapping:
3- ساخت component template برای بخش alias:
ساخت index template با استفاده از component template های ساخته شده:
در این تمپلیت، الگویی را مشخص می کنیم که اگر اندیس جدیدی که ساخته می شود شامل این الگو باشد، این پیکربندی ها را داشته باشد. در این جا باید انتهای نام آن اندیس test باشد. ممکن است چند index template داشته باشیم که این الگو را داشته باشند. می توانیم با استفاده از priority مشخص کنیم که کدام یک اولویت بیشتری دارد و در نظر گرفته شود.
حال اگر یک اندیس بسازیم که با کلمه ی test تمام شود، ویژگی های alias، mapping و setting آن موارد بالا خواهد بود.
نکته:
در قسمت mapping برای source می توانیم این ویژگی را مشخص کنیم که مقادیر source نمایش داده شوند یا خیر. در صورتی که false باشد مثل کد گفته شده در بالا مقادیر ویژگی در source نشان داده نمی شوند و فقط ویژگی های دیگر داکیومنت ها نشان داده می شود.
ساخت فیلد runtime در تمپلیت با نام run_field_test:
در زمان سرچ برای مشاهده ی این فیلد باید نام آن را در قسمت فیلدها آورد. در کوئری سرچ خود به خود نمایش داده نمی شود.
منابع:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html
https://opster.com/guides/elasticsearch/data-architecture/index-composable-templates/