ایجاد mappingهای پیش‌فرض برای ایندکس‌ها در الاستیک‌سرچ

الاستیک سرچ یک موتور جست‌جوی رایگان و قدرتمند هست که قابلیت‌های بسیاری داره و میشه از اون در موارد زیادی استفاده کرد با کمی سرچ می‌تونید با کاربرد‌های مختلف اون آشنا بشید.
الاستیک برای اینکه بتونه داکیومنت‌هارو درون خودش نگه داره و بدونه که چجوری باید درون اون‌ها جست‌وجو کنه نیازمند یک mapping هست که توسط مدیر سیستم ایجاد میشه. این mapping مشخص میکنه که کدوم فیلد چه کاربردی داره، نوعش چی هست و چجوری باید index بشه، اصلا index بشه یا نه، چجوری آنالیز بشه، اینکه در سرچ کلی نقش داشته باشه یا نه و … . هر مجموعه‌ای که به الاستیک اضافه میشه (الاستیک این مجموعه‌ها رو index نامگذاری میکنه) باید دارای یک مپ باشه تا الاستیک بدونه که چجوری باید با داکیومنت(داده)های درون اون برخورد کنه. پس یعنی شما موظف هستید که پیش از اضافه کردن داده به index یک mapping برای اون index بسازید.

توی الاستیک برای اینکه بشه indexهای مختلفی رو بدون در نگرانی درمورد mapping اونها ایجاد و استفاده کرد، میشه قالب‌های پیش تعریف شده‌ای برای index ها ایجاد کرد تا درصورت لزوم الاستیک از این mappingها برای indexهای جدید استفاده بکنه.
نحوه ایجاد این قالب‌های پیش‌تعریف شده خیلی راحته، برای مقال دستور زیر یک قالب پیش‌فرض برای indexهایی که نام آنها با الگوی te* همخوانی دارند (مثلا tehran) ایجاد می‌کند.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
curl -XPUT localhost:9200/_template/template_1 -d '
{
"template": "te*",
"settings": {
"number_of_shards": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "string",
"index": "not_analyzed"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}
'

ازین پس شما میتونید توی indexهایی مثل tehran، terminal، tehran_1 و … داده اضافه کنید و مطمئن باشید که خود الاستیک این mapping رو برای ایجاد اونها استفاده می‌کنه.
برای حذف یک قالب هم می‌تونید دستور زیر رو اجرا کنید.

1
curl -XDELETE localhost:9200/_template/template_1

همچنین درصورتی که می‌خواید قالبی که قبلا ایجاد کردید رو ببینید می‌تونید با دستور زیر اطلاعات اون رو مشاهده کنید.

1
curl -XGET localhost:9200/_template/template_1

References: