جستجو: Elasticsearch
Elasticsearch: موتور جستجوی متن کامل با ایندکس معکوس، تحلیل متن و کاربردهای واقعی جستجو
چرا دیتابیس کافی نیست؟
LIKE %کلمه% در SQL = اسکن کامل + بدون فهم زبان! برای جستجوی واقعی (رتبهبندی، غلطیابی، فازی) موتور جستجو لازم است.
Elasticsearch چیست؟
موتور جستجوی متن کامل توزیعشده، مبتنی بر Lucene — قلب سیستمهای جستجوی بزرگ (ویکیپدیا، گیتهاب، دیجیکالا!).
ایندکس معکوس — قلب جادو
دیتابیس: سند → کلمات. ایندکس معکوس: کلمه → اسناد!
سند ۱: «یادگیری ماشین جذاب است»
سند ۲: «یادگیری عمیق شاخه ماشین است»
ایندکس معکوس:
یادگیری → [۱, ۲]
ماشین → [۱, ۲]
جذاب → [۱]
عمیق → [۲]
جستجوی «ماشین» = مستقیم لیست [۱,۲] — بدون اسکن!
تحلیل متن (Analysis)
قبل از ایندکس، متن «تحلیل» میشود:
- Tokenize: جمله → کلمات
- فیلتر: حذف stopwords (از، به، که)
- Stemming: «کتابها» → «کتاب»
- Lowercase، نرمالسازی
جستجو هم همین تحلیل را میگذراند — «کتابهایم» و «کتاب» همرنگ میشوند!
رتبهبندی (Relevance)
مرتبسازی نتایج با TF-IDF/BM25:
- کلمه در این سند زیاد تکرار شده؟ (TF)
- کلمه در کل نادر است؟ (IDF — متمایزکننده!)
- متن کوتاهتر با همان تطابق = مرتبطتر
معماری توزیعشده
- Index = مجموعه اسناد؛ تقسیم به Shardها
- هر Shard = یک Lucene + Replica (دسترسپذیری)
- جستجو: موازی روی همه Shardها + ادغام نتایج!
کاربردها
- جستجوی محصول (ایکامرس)
- جستجوی لاگ و متریک (ELK Stack!)
- پیشنهاددهی (typeahead)
- تحلیل متن و تجمیع (Aggregation)
نکته معماری: Elasticsearch «دیتابیس اصلی» نیست — داده از منبع (PostgreSQL) با sync (CDC/Logstash) به آن میرسد؛ جستجو در ES، ثبت در SQL!
جمعبندی
- ES = جستجوی متن کامل توزیعشده
- ایندکس معکوس: کلمه → اسناد (جستجوی فوری)
- تحلیل متن + BM25 = نتایج هوشمند
- Shard + Replica = مقیاس و دسترسپذیری
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.