Mapping — search engine indeksidagi hujjat fieldlari qanday turda saqlanishi va indekslanishini belgilovchi schema tavsifidir. U field nomi, data type, analyzer, indekslash xususiyati, format va nested obyekt semantikasini aniqlaydi. To‘g‘ri mapping qidiruv natijasi, aggregation aniqligi va storage hajmiga bevosita ta’sir qiladi.
Field turlari
Matn fieldi odatda text turida analyzer orqali tokenlanadi. Aniq tenglik, sorting va aggregation uchun keyword ishlatiladi. Bir qiymat ikkala ehtiyojga xizmat qilsa multi-field yaratiladi: asosiy text full-text qidiruvga, ichki keyword esa aniq operatsiyalarga beriladi.
Raqam, boolean, date, IP va geospatial fieldlar o‘z formatiga ega. Sana matn sifatida indekslansa vaqt oralig‘i qidiruvi lexicographic tartibga tushib, noto‘g‘ri natija berishi mumkin. Raqamni keyword qilish aniq filterga ishlasa ham range va numeric aggregation imkoniyatini yo‘qotadi.
Dynamic mapping
Dynamic mapping yangi fieldni birinchi ko‘rilgan qiymatga qarab avtomatik yaratadi. Bu boshlang‘ich ingestni yengillashtiradi, ammo tasodifiy schema xavfini tug‘diradi. Birinchi hujjatda "42" matn bo‘lib, keyingisida 42 raqam kelsa type conflict yuz beradi.
Loglardagi foydalanuvchi yaratgan kalitlar mapping explosionga olib kelishi mumkin. Har noyob field cluster metadata va xotira sarflaydi. Dynamic template ma’lum nom yoki pathga tur belgilaydi; noma’lum fieldlarni rad etish yoki indekslamasdan source’da saqlash ham mumkin.
Obyekt va nested model
Oddiy object array ko‘pincha ichki qiymatlarni parallel field arraylariga tekislaydi. Masalan, ikki mahsulotning color va size qiymatlari orasidagi juftlik yo‘qolishi mumkin. Nested type har array elementini alohida yashirin hujjat sifatida saqlab, juftlikni saqlaydi, ammo query va storage xarajatini oshiradi.
Parent-child model obyektlar mustaqil yangilanganda ishlatilishi mumkin. Join operatsiyasi qimmat bo‘lgani sabab search engine relational database kabi umumiy join platformasi sifatida ishlatilmaydi. Ko‘pincha qidiruv uchun zarur qiymatlar hujjatga denormalizatsiya qilinadi.
Mapping o‘zgarishi
Mavjud field turini joyida keyworddan datega almashtirish odatda mumkin emas, chunki diskdagi indeks strukturasi allaqachon yaratilgan. Yangi mapping bilan yangi indeks ochilib, hujjatlar reindex qilinadi, keyin alias yangi indeksga atomik ko‘chiriladi. Eski indeks rollback muddati davomida saqlanishi mumkin.
Analyzer o‘zgarishi ham avval indekslangan tokenlarni qayta hisoblamaydi. Search analyzer alohida yangilanishi mumkin, lekin index analyzer bilan nomuvofiqlik relevance’ni buzadi. Schema versiyasi template va deployment artifact sifatida boshqariladi.
Index va source
Fieldni index: false qilish uning source hujjatda saqlanishiga to‘sqinlik qilmasligi mumkin; u natijada qaytadi, lekin qidirilmaydi. doc_values sorting va aggregation uchun columnar strukturani beradi. Text fieldlarda doc values odatda yo‘q, fielddata esa katta heap sarfi sabab ehtiyotkor qo‘llanadi.
Sensitive field source’da qolsa, “indekslanmagan” bo‘lishi uni maxfiy qilmaydi. Access control va source filtering zarur. Mappingdagi ignore_malformed yomon qiymatni butun hujjatni rad etmasdan chetlab o‘tishi mumkin, ammo ignored fieldlar monitoring qilinmasa data quality muammosi yashirinadi.
Template va alias
Index template yangi indekslarga mapping, setting va aliasni avtomatik qo‘llaydi. Template priority bir nechta mos template orasidagi birikish tartibini belgilaydi; kutilmagan ustuvorlik field type’ini almashtirishi mumkin. Template o‘zgartirilishi mavjud indeks mappingini orqaga qayta yozmaydi. Shu sabab yangi versiya test indeksida yaratilib, sample hujjatlar indekslanadi va query hamda aggregation natijasi tekshiriladi. Alias applicationni fizik indeks nomidan ajratib, reindexdan keyingi o‘tishni soddalashtiradi.
Bog‘liq tushunchalar
Search engine, Data type, Analyzer, Dynamic mapping, Nested object, Reindex, Doc values