מה זה?

כתיבת שאילתת JSON כל פעם רק כדי “לבדוק מה יש ב-Index” מסורבלת. Kibana פותר את זה: ממשק ויזואלי שרץ לצד Elasticsearch, נותן עורך שאילתות נוח (Dev Tools), חיפוש חופשי בלי קוד, ולוחות מחוונים (Dashboards) עם גרפים שנבנים מ-Aggregations — בדיוק כמו שכבר תרגלנו, אבל מוצגים ויזואלית במקום JSON גולמי.

מילות מפתח שחשוב לזכור

• Kibana — כלי ויזואליזציה וניהול שמתחבר ל-Elasticsearch, בדרך כלל רץ כקונטיינר נפרד לצדו

• Dev Tools — עורך שאילתות מובנה בתוך Kibana, נוח לכתיבה ובדיקה של שאילתות JSON בלי קוד C#/curl

• Index Pattern (Data View) — הגדרה ב-Kibana שאומרת לה על אילו Indices להסתכל בעת יצירת ויזואליזציות

• Dashboard — לוח מחוונים עם כמה גרפים/טבלאות יחד, נבנה מ-Aggregations שכבר מוכרות

# docker-compose.yml — Elasticsearch + Kibana together (a hint for the next unit)
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    ports:
      - "9200:9200"

  kibana:
    image: docker.elastic.co/kibana/kibana:8.15.0
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
# Dev Tools inside Kibana — the same query already written in previous lessons,
# but in a convenient editor with autocomplete, no curl/code:

GET /products/_search
{
  "query": { "match": { "name": "shoes" } }
}

הסבר עיקרי

Kibana לא מחליף שום דבר שכבר נלמד — כל שאילתת match/term/bool/aggs שכבר נכתבה עדיין עובדת בדיוק אותו הדבר — Kibana רק נותן ממשק נוח יותר לכתוב ולהריץ אותן (Dev Tools), ולתרגם Aggregations לגרפים ויזואליים (Dashboards) במקום JSON גולמי שצריך לפרש בעין.

Index Pattern הוא הגשר בין Elasticsearch ל-Kibana — לפני שאפשר לבנות ויזואליזציה, Kibana צריכה לדעת “על אילו Indices להסתכל” — Index Pattern (שם חדש יותר: Data View) הוא ההגדרה הזו. זה שלב חד-פעמי, לא צריך להגדיר מחדש לכל גרף.

Dashboard בונה על Aggregations שכבר מוכרות — גרף “כמות מוצרים לפי קטגוריה” ב-Kibana הוא בדיוק ה-terms Aggregation מהשיעור הרביעי, רק מוצג כעוגה/עמודות ויזואלית במקום JSON עם מספרים. מי שמבין Aggregations כבר מבין את הבסיס הרעיוני של כל Dashboard ב-Kibana.

יתרונות

Kibana נותן ממשק ויזואלי נוח לבדיקת נתונים ושאילתות בלי לכתוב קוד; Dev Tools עם Autocomplete מאיץ כתיבת שאילתות JSON; Dashboards הופכים Aggregations למידע ויזואלי קריא לבעלי עניין לא-טכניים.

חסרונות

Kibana דורש קונטיינר/משאב נוסף לצד Elasticsearch עצמו; Dashboards מורכבים דורשים זמן בנייה, ולא תמיד מחליפים שאילתה תוכנתית ממוקדת בקוד.

נקודות חשובות

• Kibana הוא כלי ויזואליזציה/ניהול, לא מחליף את Elasticsearch — עובד לצדו

• Dev Tools מאפשר לכתוב את אותן שאילתות JSON שכבר נלמדו, בממשק נוח יותר

• Index Pattern (Data View) הוא השלב שמחבר Kibana ל-Index ספציפי לפני ויזואליזציה

• Dashboard = ויזואליזציה של Aggregations שכבר מוכרות, לא מושג חדש בפני עצמו

טעויות נפוצות

• לחשוב ש-Kibana הוא DB נפרד או תחליף ל-Elasticsearch — הוא רק שכבת ויזואליזציה מעליו

• לנסות לבנות Dashboard בלי להגדיר Index Pattern קודם — הוא לא “יודע” על אילו נתונים להסתכל

• להתעלם מ-Dev Tools ולהמשיך לכתוב שאילתות רק ב-curl/קוד — מפספס כלי בדיקה מהיר ונוח

סיכום

Kibana הוא כלי ויזואליזציה וניהול שרץ לצד Elasticsearch — Dev Tools נותן עורך שאילתות נוח (אותן שאילתות match/bool/aggs שכבר נלמדו), ו-Dashboards הופכים Aggregations למידע ויזואלי (גרפים, טבלאות) לבעלי עניין לא-טכניים. Index Pattern הוא השלב שמחבר Kibana ל-Index ספציפי. זהו סיום היחידה — כל הכלים (Document/Index/Mapping, text/keyword, שאילתות, Aggregations) מתחברים כאן לחוויית עבודה שלמה.

דוקומנטציה רשמית

Kibana — Documentation


תרגילים

תרגיל 1 — הרצת Kibana והתחברות

המשימה: הריצו Kibana כקונטיינר (עם docker-compose מהדוגמה או docker run נפרד), וגשו אליו דרך הדפדפן (localhost:5601).

בדיקה: ממשק Kibana נטען בהצלחה ומראה שהוא מחובר ל-Elasticsearch.

תרגיל 2 — Dev Tools

המשימה: הריצו ב-Dev Tools של Kibana שאילתה שכבר כתבתם בשיעורים קודמים (למשל bool עם must+filter).

בדיקה: התוצאה זהה למה שקיבלתם קודם דרך curl/קוד — הוכחה ש-Kibana רק “עוד ממשק” לאותה Elasticsearch.


פרויקט מסכם

המשימה: בנו Dashboard בסיסי ב-Kibana ל-Index products או Articles.

דרישות:

  1. הגדירו Index Pattern (Data View) ל-Index הרלוונטי
  2. צרו ויזואליזציה אחת מבוססת terms Aggregation (למשל עוגה/עמודות לפי קטגוריה/תג)
  3. צרו ויזואליזציה שנייה מבוססת Metric (למשל ממוצע מחיר, או ציר זמן לפי תאריך פרסום)
  4. שלבו את שתיהן ב-Dashboard אחד

בדיקה: ה-Dashboard מציג את שתי הויזואליזציות עם נתונים נכונים, תואמים למה שהתקבל בשאילתות JSON המקבילות בשיעורים הקודמים.

מה בפרק הבא

בפרק הבא נעבור ליחידה חדשה — ממונוליט למיקרוסרביסים: איך מפרקים אפליקציה גדולה אחת (מונוליט) לשירותים עצמאיים קטנים יותר, ומתי זה בכלל שווה את המורכבות הנוספת.