On this page
מערך שיעור: קונטיינר ו-C# Client
משך: 2 שעות אקדמיות (90 דקות).
מטרת השיעור: הסטודנטים יריצו Elasticsearch ב-Docker ויתחברו אליו מקוד C# עם Fluent API.
בסוף השיעור הסטודנטים צריכים: להריץ Elasticsearch כקונטיינר, להוסיף מסמכים מ-C#, ולבנות שאילתה בסיסית עם Fluent API.
דגש קריטי: קשרו את הרצת הקונטיינר במפורש ליחידת Docker — זה אמור להיות “כבר מוכר”, לא נושא חדש.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הזכירו docker run על MongoDB/Kafka |
| הדגמה חיה: docker run Elasticsearch | 15 דקות | מיפוי פורט 9200, בדיקה עם curl |
| הרעיון: C# Client | 15 דקות | ElasticsearchClient, IndexAsync |
| Fluent API לשאילתות | 30 דקות | תרגום bool/must/filter לקוד C# |
| async/await | 10 דקות | קישרו לכל תקשורת רשת שכבר נלמדה |
| תרגול מודרך | 15 דקות | תרגיל 1+2 |
דגשים להעברת השיעור
- ודאו שהקונטיינר עולה בהצלחה לפני תחילת השיעור בפועל — בעיות זיכרון/משאבים עם Elasticsearch ב-Docker נפוצות ועלולות לבלוע זמן שיעור יקר.
- Fluent API מבלבל בהתחלה כי הוא “מתרגם” JSON מקונן למתודות מקוננות — עברו יחד, שורה-שורה, על התרגום מ-JSON (שכבר מוכר) לקוד C#.
- הדגישו את
Category.Suffix("keyword")כתזכורת ישירה לשיעור text/keyword — אותה מלכודת, הקשר חדש.
מושגים
Elasticsearch Container — הרצה כ-Docker Container.
Elastic.Clients.Elasticsearch — ספריית .NET הרשמית.
Fluent API — בניית שאילתות עם מתודות C# בטוחות-טיפוסים.
תרגיל חשיבה
שאלת פתיחה: “אם הייתם בונים שאילתת bool מורכבת (must+filter+must_not) כמחרוזת JSON ידנית בתוך קוד C#, מה היה הסיכון? מה Fluent API פותר?”
מהלך: הובילו לתובנה: מחרוזת JSON גולמית בתוך קוד C# (string concatenation) פגיעה לשגיאות הקלדה (סוגריים לא מאוזנים, שם שדה שגוי) שנתפסות רק בזמן ריצה, אם בכלל. Fluent API מעביר את אותה בדיקה לזמן קומפילציה — בדיוק העיקרון שחזר שוב ושוב מתחילת הקורס (Static Typing, DataAnnotations, Generics).
מה המרצה מראה בסוף: הריצו שאילתה עם שגיאת הקלדה מכוונת בשם שדה — פעם כ-JSON גולמי (string) שנכשל רק בזמן ריצה עם שגיאה לא-ברורה, ופעם עם Fluent API שבו שם שדה שגוי כלל לא מתקמפל (כי הוא property של המחלקה) — ניגוד ישיר שממחיש את היתרון.