Elasticsearch — documentlarni indekslash, qidirish va aggregation qilishga mo‘ljallangan distributed search hamda analytics tizimi. U text search, log analytics, observability, katalog qidiruvi va boshqa katta hajmli query vazifalarida ishlatiladi.
Elasticsearch ma’lumotni JSONga o‘xshash documentlar ko‘rinishida saqlaydi va inverted index orqali text qidiruvni tezlashtiradi.
Document
Asosiy ma’lumot birligi document.
Document fieldlardan iborat:
{
"title": "Kubernetes",
"category": "DevOps",
"views": 120
}
Har document index ichida noyob identifikatorga ega.
Index
Index o‘xshash documentlar to‘plami.
Masalan:
- articles;
- logs;
- products;
- events.
Index mapping, settings va shard tuzilishiga ega.
Ko‘p mayda index cluster overheadini oshiradi.
Mapping
Mapping field type va indexing xatti-harakatini belgilaydi.
Field turlari:
- text;
- keyword;
- integer;
- date;
- boolean;
- object;
- nested;
- geo;
- vectorga mos turlar.
Noto‘g‘ri mapping query va storage muammosiga olib keladi.
Text va keyword
text field full-text search uchun analiz qilinadi.
keyword field aniq qiymat, filter, sort va aggregation uchun ishlatiladi.
Masalan, maqola sarlavhasi text, status esa keyword bo‘lishi mumkin.
Bitta field multi-field orqali ikkala ko‘rinishda indekslanishi mumkin.
Analyzer
Analyzer textni tokenlarga aylantiradi.
Bosqichlar:
U lowercase, stop word, stemming, synonym va boshqa qayta ishlashni qo‘llashi mumkin.
Index va search analyzer mos bo‘lishi kerak.
Inverted index
Inverted index har term qaysi documentlarda uchrashini saqlaydi.
Oddiy ko‘rinish:
kubernetes → doc1, doc5
devops → doc1, doc2, doc8
Query barcha documentni to‘liq o‘qimasdan term ro‘yxati orqali natijani topadi.
Query va filter
Query relevance score hisoblaydi.
Filter esa exact shart bilan documentlarni tanlaydi.
Misollar:
- title’da ma’lum so‘z;
- status = active;
- sana oralig‘i;
- category.
Filter natijalari cache va tez execution uchun qulay bo‘lishi mumkin.
Relevance
Full-text search document qanchalik mos ekanini score bilan baholaydi.
Hisobga olinishi mumkin:
- term frequency;
- document frequency;
- field length;
- boost;
- query structure.
Search sifati analyzer, data va user niyatiga bog‘liq.
Aggregation
Aggregation documentlar ustida analytics bajaradi.
Misollar:
- category bo‘yicha count;
- kunlik histogram;
- o‘rtacha narx;
- percentile;
- unique user;
- nested group.
Aggregation katta bucket sonida memory talab qiladi.
Cluster
Elasticsearch cluster bir yoki bir nechta node’dan iborat.
Node’lar:
vazifalarini bajaradi.
Role’lar workloadga qarab ajratilishi mumkin.
Shard
Index bir nechta primary shardga bo‘linadi.
Har shard mustaqil search engine segmentlari to‘plamiga o‘xshaydi.
Shardlar node’lar orasida taqsimlanadi.
Juda ko‘p shard heap va cluster state overheadini oshiradi. Juda katta shard recovery’ni sekinlashtiradi.
Replica
Primary shard nusxasi replica.
- node failure’da availability;
- read throughput;
- failover
uchun ishlatiladi.
Replica backup emas, chunki noto‘g‘ri delete va update replica’ga ham ko‘chadi.
Routing
Document ID yoki routing qiymati qaysi shardga tushishini belgilaydi.
Custom routing bir tenant yoki parent-child data’ni bir shardga joylashtirishi mumkin.
Noto‘g‘ri routing hot shard yaratadi.
Refresh
Yangi document search natijasida ko‘rinishi uchun index refresh qilinadi.
Elasticsearch near-real-time search modeliga ega.
Juda tez refresh indexing throughputni pasaytiradi.
Bulk ingestionda interval vaqtincha o‘zgartirilishi mumkin.
Segment
Shard ichida immutable Lucene segmentlari yaratiladi.
Update amalda yangi document yozib, eskisini deleted deb belgilashi mumkin.
Background merge kichik segmentlarni birlashtiradi.
Merge disk I/O va CPU ishlatadi.
Bulk API
Ko‘p documentni alohida request o‘rniga batch bilan yuborish throughputni oshiradi.
Batch juda katta bo‘lsa:
muammosi paydo bo‘ladi.
Response ichida har item xatosi alohida tekshiriladi.
Index lifecycle
Time-based log indexlari:
- hot;
- warm;
- cold;
- delete
bosqichlari orqali boshqarilishi mumkin.
Rollover hajm, yosh yoki document soniga qarab yangi index yaratadi.
Retention storage xarajati va tahlil talabiga mos belgilanadi.
Snapshot
Snapshot index va cluster ma’lumotini tashqi repositoryga backup qiladi.
- incrementga yaqin saqlash;
- restore;
- boshqa clusterga ko‘chirish
uchun ishlatiladi.
Replica yoki disk nusxasi snapshotning o‘rnini bosmaydi.
Security
- authentication;
- role;
- index permission;
- field va document restriction;
- TLS;
- audit;
- API key
bilan himoyalanadi.
Internetga authentication’siz ochiq cluster katta data yo‘qotish xavfiga ega.
Cluster state
Mapping, index, node va shard metadata cluster state’da saqlanadi. Juda ko‘p index, field va shard state hajmini oshirib boshqaruv operationlarini sekinlashtiradi.
Master-eligible node
Cluster boshqaruv qarorlari uchun master-eligible node’lar consensus qiladi. Majority yo‘qolsa split-brainni oldini olish uchun ayrim write amallari to‘xtaydi.
Allocation
Shardlar disk, awareness, tier va allocation rule asosida node’lar orasida joylashtiriladi. Disk watermark oshsa yangi shard ko‘chishi yoki write block yuz berishi mumkin.
Mapping explosion
Dynamic fieldlar nazoratsiz yaratilsa mapping juda kattalashadi. User-defined keylar alohida nested obyekt yoki flatten qilingan struktura bilan saqlanishi mumkin.
Reindex
Field type yoki analyzer o‘zgarganda mavjud documentlar yangi indexga qayta yoziladi. Alias orqali traffic eski indexdan yangisiga bosqichma-bosqich o‘tkaziladi.
Query cache
Filter va segmentga mos natijalar cache qilinishi mumkin. Tez-tez o‘zgaradigan yoki yuqori cardinality query cache’dan kam foyda oladi.
Bog‘liq tushunchalar
Search engine, Document, Index, Mapping, Analyzer, Inverted index, Query, Aggregation, Shard, Replica, Snapshot, Kibana