Elasticsearch: Volltextsuche | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

Elasticsearch Suche Installation

Zuletzt aktualisiert: 11.01.2026 um 12:06 Uhr

Elasticsearch: Volltextsuche

Elasticsearch ist eine verteilte Such- und Analyse-Engine. Sie ermöglicht blitzschnelle Volltextsuche, Logging-Analyse und komplexe Datenabfragen.

Installation

# GPG Key
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

# Repository
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

# Installieren
sudo apt update
sudo apt install elasticsearch -y

# Starten
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

Docker-Installation

docker run -d \
  --name elasticsearch \
  -p 9200:9200 \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=false" \
  -v esdata:/usr/share/elasticsearch/data \
  elasticsearch:8.11.0

Verbindung testen

curl -X GET "localhost:9200/"

# Cluster-Health
curl -X GET "localhost:9200/_cluster/health?pretty"

Index erstellen

# Index mit Mapping
curl -X PUT "localhost:9200/produkte" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "name": { "type": "text" },
      "beschreibung": { "type": "text" },
      "preis": { "type": "float" },
      "kategorie": { "type": "keyword" },
      "erstellt": { "type": "date" }
    }
  }
}'

Dokumente indexieren

# Einzelnes Dokument
curl -X POST "localhost:9200/produkte/_doc/1" -H 'Content-Type: application/json' -d'
{
  "name": "Laptop Pro",
  "beschreibung": "Leistungsstarker Laptop für Entwickler",
  "preis": 1299.99,
  "kategorie": "elektronik",
  "erstellt": "2026-01-11"
}'

# Bulk-Import
curl -X POST "localhost:9200/produkte/_bulk" -H 'Content-Type: application/json' -d'
{"index":{"_id":"2"}}
{"name":"Smartphone","preis":599.99,"kategorie":"elektronik"}
{"index":{"_id":"3"}}
{"name":"Kopfhörer","preis":149.99,"kategorie":"audio"}
'

Suchen

# Alle Dokumente
curl -X GET "localhost:9200/produkte/_search?pretty"

# Match Query (Volltextsuche)
curl -X GET "localhost:9200/produkte/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "beschreibung": "Laptop Entwickler"
    }
  }
}'

# Exakter Filter
curl -X GET "localhost:9200/produkte/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "term": {
      "kategorie": "elektronik"
    }
  }
}'

# Kombinierte Query
curl -X GET "localhost:9200/produkte/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "Laptop" } }
      ],
      "filter": [
        { "range": { "preis": { "lte": 1500 } } }
      ]
    }
  }
}'

PHP-Integration

// composer require elasticsearch/elasticsearch
use Elasticsearch\ClientBuilder;

$client = ClientBuilder::create()
    ->setHosts(['localhost:9200'])
    ->build();

// Indexieren
$client->index([
    'index' => 'produkte',
    'id' => '4',
    'body' => [
        'name' => 'Tablet',
        'preis' => 449.99
    ]
]);

// Suchen
$results = $client->search([
    'index' => 'produkte',
    'body' => [
        'query' => [
            'match' => ['name' => 'Laptop']
        ]
    ]
]);

foreach ($results['hits']['hits'] as $hit) {
    echo $hit['_source']['name'];
}

Aggregationen

curl -X GET "localhost:9200/produkte/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "size": 0,
  "aggs": {
    "kategorien": {
      "terms": { "field": "kategorie" }
    },
    "durchschnittspreis": {
      "avg": { "field": "preis" }
    }
  }
}'

Nützliche Befehle

# Alle Indizes
curl -X GET "localhost:9200/_cat/indices?v"

# Index löschen
curl -X DELETE "localhost:9200/produkte"

# Dokument löschen
curl -X DELETE "localhost:9200/produkte/_doc/1"

Weitere Hilfe

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120