# מערך שיעור: מבוא ל-Elasticsearch📋 מערך מרצה

משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יבינו למה חיפוש טקסט חכם דורש מנוע ייעודי, ויכירו Document/Index/Mapping.

בסוף השיעור הסטודנטים צריכים: להסביר את מגבלות LIKE ב-SQL לחיפוש טקסט, ליצור Index עם Mapping בסיסי, ולהבדיל Elasticsearch מ-MongoDB במטרה (לא רק במבנה נתונים).

דגש קריטי: הבהירו מפורשות ש-Elasticsearch משלים DB קיים, לא מחליף אותו — מניעת בלבול מושגי מרכזי.

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | הראו LIKE '%נעל%' שמפספס "נעליים" |
| הבעיה: LIKE מוגבל | 15 דקות | התאמת תווים מדויקת, לא משמעות |
| הרעיון: Document/Index | 20 דקות | דמיון ל-MongoDB, מטרה שונה |
| הרעיון: Mapping | 25 דקות | text מול keyword (רמז לשיעור הבא) |
| הדגמה חיה: יצירת Index | 20 דקות | PUT mapping, הוספת documents |
| תרגול מודרך | 5 דקות | תרגיל 1 |

---

## דגשים להעברת השיעור

- ההשוואה ל-MongoDB (Document/Index דומים במבנה) עוזרת, אך ודאו שסטודנטים לא מסיקים "זה עוד NoSQL DB" — הדגישו את ההבדל התכליתי (חיפוש מול אחסון) שוב ושוב.
- אל תעמיקו עדיין ב-`text` מול `keyword` — רק ציינו שהם קיימים ושההבדל יוסבר בשיעור הבא, כדי לא להעמיס את השיעור הראשון.
- הדגמה חיה של יצירת Index והוספת Documents (לא רק JSON על שקופית) חשובה — סטודנטים צריכים לראות בעיניים בקשות ל-Elasticsearch בפועל (Kibana Dev Tools או curl).

---

## מושגים

**Information Retrieval** — מציאת מידע רלוונטי, כולל דירוג.
**Document** — יחידת נתונים דמוית-JSON.
**Index** — אוסף Documents, מקביל ל-Table/Collection.
**Mapping** — הגדרת סכמה, כולל איך כל שדה מאונדקס.

---

## תרגיל חשיבה

**שאלת פתיחה:** "אתם מחפשים 'מחשב נייד' בחנות אונליין. אילו תוצאות הייתם רוצים לראות שגם: כתיב שונה מעט ('מחשב נייד' מול 'לפטופ'), או סדר מילים הפוך? האם WHERE LIKE ב-SQL יכול לתת לכם את זה?"

**מהלך:** תנו לסטודנטים לחשוב על התרחישים — `LIKE '%מחשב נייד%'` לא ימצא "לפטופ" (מילה שונה לגמרי) ולא ימצא "נייד מחשב" (סדר הפוך). הובילו לתובנה: חיפוש "חכם" דורש הבנת **מילים** ומשמעות, לא רק התאמת תווים רציפה — זו בדיוק הבעיה ש-Elasticsearch נבנה לפתור.

**מה המרצה מראה בסוף:** הריצו חיפוש `LIKE` ב-SQL מול חיפוש Elasticsearch (match query, גם אם רק רמז לשיעור הבא) על אותם נתונים — הראו ש-Elasticsearch מוצא התאמות ש-`LIKE` מפספס, ומדרג לפי רלוונטיות במקום להחזיר רשימה לא-מסודרת.
