Elasticsearch

0 85

Dauer: 15 Minuten
Schwierigkeit: Anfänger
Voraussetzungen: Tutorial 2.1 abgeschlossen (Elasticsearch läuft)


Was du am Ende dieses Tutorials erreicht hast

✅ Kibana Container läuft
✅ Kibana ist mit Elasticsearch verbunden
✅ Du kannst auf http://localhost:5601 zugreifen
✅ Du kannst Dev Tools öffnen und nutzen


Voraussetzungs-Check

Bevor wir starten, prüfe:

bash

docker ps
```

**Du MUSST elasticsearch sehen:**
```
CONTAINER ID   IMAGE                    STATUS        PORTS                   NAMES
...            elasticsearch:8.11.0     Up X minutes  0.0.0.0:9200->9200/tcp  elasticsearch

Wenn nicht:

bash

docker start elasticsearch
<em># Warte 30 Sekunden, dann weiter</em>

Schritt 1: Kibana Container starten

Der Befehl

Mac/Linux:

bash

docker run -d \
  --name kibana \
  --net elastic \
  -p 5601:5601 \
  -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
  docker.elastic.co/kibana/kibana:8.11.0

Windows PowerShell:

powershell

docker run -d --name kibana --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" docker.elastic.co/kibana/kibana:8.11.0
```

<em>### Parameter erklärt</em>

| Parameter | Was macht das? |
|-----------|----------------|
| `--name kibana` | Container heißt "kibana" |
| `--net elastic` | Im selben Netzwerk wie Elasticsearch |
| `-p 5601:5601` | Port 5601 für Web-Interface |
| `ELASTICSEARCH_HOSTS` | Wo findet Kibana Elasticsearch? |

<em>### Was passiert?</em>

1. Docker lädt Kibana herunter (ca. 800 MB)
2. Dauert 3-7 Minuten beim ersten Mal
3. Download-Fortschritt wird angezeigt

**Während des Downloads:**
```
Unable to find image 'docker.elastic.co/kibana/kibana:8.11.0' locally
8.11.0: Pulling from kibana/kibana
a2abf6c4d29d: Pull complete
...
Status: Downloaded newer image for docker.elastic.co/kibana/kibana:8.11.0
```

**Am Ende:** Lange Container-ID
```
a7f8e9d0c1b2a3f4e5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8

Schritt 2: Warten bis Kibana bereit ist

Kibana braucht 1-3 Minuten zum Starten (länger als Elasticsearch).

Container läuft?

bash

docker ps
```

**Jetzt solltest du BEIDE Container sehen:**
```
CONTAINER ID   IMAGE                 STATUS         PORTS                    NAMES
a7f8e9d0c1b2   kibana:8.11.0         Up 2 minutes   0.0.0.0:5601->5601/tcp   kibana
f8a3d7e2c1b9   elasticsearch:8.11.0  Up 5 minutes   0.0.0.0:9200->9200/tcp   elasticsearch

Logs anschauen

bash

docker logs -f kibana
```

**Am Anfang siehst du viele Zeilen:**
```
{"log.level":"info","message":"Kibana is starting..."}
{"log.level":"info","message":"Connecting to Elasticsearch..."}
{"log.level":"info","message":"Running migrations..."}
...
```

**Warte auf diese entscheidende Zeile:**
```
{"log.level":"info","message":"http server running at http://0.0.0.0:5601"}
```

**Wenn du das siehst → Kibana ist bereit!**

Drücke `Ctrl+C` (Kibana läuft weiter im Hintergrund).

---

<em>## Schritt 3: Kibana im Browser öffnen</em>

<em>### URL öffnen</em>
```
http://localhost:5601
```

**Beim ersten Aufruf:**
- Kann 20-30 Sekunden laden
- Zeigt "Kibana is loading" oder Ladebalken
- **Sei geduldig!**

---

<em>### Was du sehen solltest</em>

**Willkommensseite:**
```
┌─────────────────────────────────────────┐
│                                         │
│         🔍 Welcome to Kibana            │
│                                         │
│   [Explore on my own]  [Add data]       │
│                                         │
└─────────────────────────────────────────┘
```

**Klicke auf "Explore on my own"**

---

<em>## Schritt 4: Dev Tools öffnen</em>

Dev Tools ist **der wichtigste Bereich** für uns! Hier führen wir alle API-Befehle aus.

<em>### Methode 1: Über das Menü</em>

1. **Klicke auf das ☰ Hamburger-Menü** (oben links, drei horizontale Linien)
2. Scrolle nach unten zu **"Management"**
3. Klicke auf **"Dev Tools"**

<em>### Methode 2: Direkt-URL</em>
```
http://localhost:5601/app/dev_tools<em>#/console</em>
```

---

<em>## Schritt 5: Dev Tools Console verstehen</em>

<em>### Layout</em>

Die Dev Tools Console ist in 2 Bereiche geteilt:
```
┌─────────────────────┬──────────────────────┐
│                     │                      │
│   EDITOR            │   RESPONSE           │
│   (Links)           │   (Rechts)           │
│                     │                      │
│   Hier schreibst    │   Hier siehst du     │
│   du deine          │   die Antworten      │
│   Anfragen          │                      │
│                     │                      │
└─────────────────────┴──────────────────────┘
```

<em>### Standard-Beispiel</em>

Im Editor (links) sollte stehen:
```
GET _search
{
  "query": {
    "match_all": {}
  }
}
```

---

<em>## Schritt 6: Erste Anfrage ausführen</em>

<em>### Test-Anfrage</em>

**Lösche** den vorhandenen Code und schreibe:
```
GET /

So führst du es aus:

  • Option 1: Klicke auf den grünen ▶️ Play-Button (rechts neben der Zeile)
  • Option 2: Drücke Ctrl+Enter (Windows/Linux) oder Cmd+Enter (Mac)

Erwartete Antwort

Rechts sollte erscheinen:

json

{
  "name": "f8a3d7e2c1b9",
  "cluster_name": "docker-cluster",
  "cluster_uuid": "Xy7R3zN4...",
  "version": {
    "number": "8.11.0",
    "build_flavor": "default",
    "build_type": "docker",
    ...
  },
  "tagline": "You Know, for Search"
}
```

**"You Know, for Search" → Verbindung funktioniert!**

---

## Schritt 7: Cluster Health prüfen

### Anfrage

Schreibe (oder kopiere) in den Editor:
```
GET /_cluster/health

Drücke Ctrl+Enter oder klicke Play ▶️

Antwort

json

{
  "cluster_name": "docker-cluster",
  "status": "yellow",              ← WICHTIG
  "timed_out": false,
  "number_of_nodes": 1,
  "number_of_data_nodes": 1,
  ...
}
```

**Status "yellow" ist OK!**
- Wir haben nur 1 Node
- Replica Shards können nicht zugewiesen werden
- Für Entwicklung perfekt normal

---

## Schritt 8: Dev Tools Features testen

### Feature 1: Auto-Complete

1. Tippe `GET /_cat/`
2. Drücke `Ctrl+Space` (oder warte kurz)
3. **Liste erscheint** mit verfügbaren Endpunkten:
   - `/_cat/indices`
   - `/_cat/nodes`
   - `/_cat/health`
   - usw.

**Wähle mit Pfeiltasten oder Maus aus!**

---

### Feature 2: Multi-Request

Du kannst mehrere Anfragen untereinander schreiben:
```
# Request 1
GET /

# Request 2
GET /_cluster/health

# Request 3
GET /_cat/indices?v
```

**Cursor auf gewünschte Anfrage → `Ctrl+Enter`**  
Nur diese wird ausgeführt!

**Alle nacheinander ausführen:**  
`Ctrl+Shift+Enter` (Windows/Linux) oder `Cmd+Shift+Enter` (Mac)

---

### Feature 3: Kommentare

Du kannst Kommentare schreiben:
```
# Das ist ein Kommentar
GET /_cluster/health

# Cluster-Statistiken abrufen
GET /_cluster/stats

Zeilen mit # werden ignoriert.


Feature 4: History

Oben rechts: Klicke auf das 🕐 Uhr-Symbol

Zeigt: Deine letzten Anfragen
Klick auf eine: Wird in Editor geladen


Feature 5: Als cURL kopieren

Oben rechts: Klicke auf 🔧 Schraubenschlüssel-Symbol
Wähle: „Copy as cURL“

Bekommst:

bash

curl -XGET "http://localhost:9200/_cluster/health" -H 'Content-Type: application/json'
```

Kannst du im Terminal ausführen!

---

<em>## Schritt 9: Indizes anzeigen</em>

<em>### Anfrage</em>
```
GET /_cat/indices?v
```

Parameter `?v` = verbose (mit Spaltenüberschriften)

<em>### Antwort (noch keine Indizes)</em>
```
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

Liste ist leer → Normal! Wir haben noch keine Indizes erstellt.

Das kommt in Tutorial 2.3!


Erfolgskriterien

Überprüfe:

  • docker ps zeigt elasticsearch UND kibana (beide „Up“)
  • http://localhost:5601 öffnet Kibana
  • Dev Tools Console ist erreichbar
  • GET / zeigt „You Know, for Search“
  • GET /_cluster/health zeigt „yellow“
  • Auto-Complete funktioniert (Ctrl+Space)

Alle Punkte ✅? Perfekt!


Troubleshooting

Problem: Kibana lädt endlos

Im Browser: „Kibana is loading…“

Lösung 1: Warten (kann 2-3 Minuten dauern)

Lösung 2: Logs prüfen

bash

docker logs kibana | tail -20

Suche nach Fehlern (rot markiert oder „ERROR“).

Lösung 3: Kibana neu starten

bash

docker restart kibana
<em># Warte 2 Minuten</em>

Problem: „Unable to connect to Elasticsearch“

In Kibana: Fehlermeldung

Ursache: Kibana findet Elasticsearch nicht

Lösung 1: Beide im selben Netzwerk?

bash

docker network inspect elastic

Sollte BEIDE Container zeigen.

Lösung 2: Elasticsearch läuft?

bash

docker ps | grep elasticsearch
<em># Sollte "Up" sein</em>

<em># Teste Elasticsearch direkt</em>
curl http://localhost:9200

Lösung 3: Kibana mit richtiger Config neu starten

bash

docker stop kibana
docker rm kibana

docker run -d --name kibana --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" docker.elastic.co/kibana/kibana:8.11.0
```

---

<em>### Problem: Port 5601 bereits belegt</em>
```
Error: port is already allocated

Lösung: Anderen Port nutzen

bash

docker run -d --name kibana --net elastic -p 5602:5601 ...
<em># Dann: http://localhost:5602</em>
```

---

<em>### Problem: Dev Tools nicht gefunden</em>

**Im Menü:** Kein "Dev Tools" sichtbar

**Lösung:** Scrolle weiter nach unten im Menü!  
Dev Tools ist unter "Management" → ganz unten

**Alternative:** Direkt-URL
```
http://localhost:5601/app/dev_tools<em>#/console</em>
```

---

<em>## Dev Tools Shortcuts (Spickzettel)</em>

| Aktion | Windows/Linux | Mac |
|--------|---------------|-----|
| Request ausführen | `Ctrl+Enter` | `Cmd+Enter` |
| Alle Requests ausführen | `Ctrl+Shift+Enter` | `Cmd+Shift+Enter` |
| Auto-Complete | `Ctrl+Space` | `Cmd+Space` |
| Zeile löschen | `Ctrl+D` | `Cmd+D` |
| Request formatieren | `Ctrl+I` | `Cmd+I` |
| Suchen | `Ctrl+F` | `Cmd+F` |

---

<em>## Zusammenfassung</em>

**Was du geschafft hast:**

✅ Kibana Container gestartet  
✅ Mit Elasticsearch verbunden  
✅ Dev Tools Console geöffnet  
✅ Erste API-Anfragen ausgeführt  
✅ Dev Tools Features kennengelernt  

**Wichtige URLs:**
```
Elasticsearch: http://localhost:9200
Kibana:        http://localhost:5601
Dev Tools:     http://localhost:5601/app/dev_tools<em>#/console</em>

Wichtige Docker-Befehle:

bash

docker ps                    <em># Container anzeigen</em>
docker logs kibana           <em># Kibana Logs</em>
docker restart kibana        <em># Kibana neu starten</em>
docker stop kibana           <em># Kibana stoppen</em>
docker start kibana          <em># Kibana wieder starten</em>
```

**Wichtige API-Befehle:**
```
GET /                        <em># Elasticsearch Info</em>
GET /_cluster/health         <em># Cluster-Status</em>
GET /_cat/indices?v          <em># Alle Indizes</em>

Author: Andreas Lang

Sphinx-Flashdesign.de

Andreas Lang konzentriert sich seit zwei Jahrzehnten auf die Webentwicklung und Webdesign mit dem Schwerpunkt PHP, Laravel und Javascript und betreut seine Kunden mit Herz und Seele in allen Bereichen von Entwicklung, Design, Suchmaschinenoptimierung, IT-Recht, IT-Sicherheit etc.