7 Use Cases

Die Stärke von OpenSearch und Elasticsearch liegt in ihrer Vielseitigkeit und Anpassungsfähigkeit. Um dies zu verdeutlichen, betrachten wir verschiedene reale Anwendungsszenarien und ihre spezifischen Implementierungsdetails.

7.1 Enterprise Search und Dokumentenmanagement

7.1.1 Digitale Bibliotheken und Archivierung

Ein klassisches Beispiel ist die Implementation einer digitalen Bibliothek für ein Forschungsinstitut. Hier müssen verschiedene Dokumenttypen - von wissenschaftlichen Publikationen bis hin zu Forschungsdaten - effizient durchsuchbar gemacht werden.

Technische Umsetzung:

{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      "authors": {
        "type": "nested",
        "properties": {
          "name": { "type": "text" },
          "institution": { "type": "keyword" }
        }
      },
      "abstract": { "type": "text" },
      "publication_date": { "type": "date" },
      "full_text": {
        "type": "text",
        "term_vector": "with_positions_offsets"
      },
      "attachments": {
        "type": "binary"
      }
    }
  }
}

Besondere Herausforderungen:

7.1.2 Intranet-Suchportale

Ein weiteres Beispiel ist die Implementierung einer unternehmensweiten Suchplattform, die verschiedene interne Systeme integriert.

Architekturbeispiel:

SharePoint ─┐
Confluence ─┼─── Ingest Pipeline ──► OpenSearch ◄─── Search UI
Jira ───────┘

Die Herausforderung liegt hier in der:

7.2 Log Analytics und Monitoring

7.2.1 DevOps-Monitoring-Plattform

Ein modernes DevOps-Team betreibt hunderte von Microservices in Kubernetes. Die Herausforderung: Echtzeitüberwachung und schnelle Problemanalyse.

Typische Pipeline-Konfiguration:

input {
  kubernetes {
    host => "https://kubernetes.default.svc"
    namespace => "production"
    codec => json
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:content}" }
  }
  date {
    match => [ "timestamp", "ISO8601" ]
    target => "@timestamp"
  }
}

output {
  opensearch {
    hosts => ["https://opensearch:9200"]
    index => "logs-%{+YYYY.MM.dd}"
    ssl => true
  }
}

Implementierte Features:

7.2.2 Security Information and Event Management (SIEM)

Eine Bank implementiert ein SIEM-System zur Erkennung von Sicherheitsvorfällen.

Beispiel einer Detection Rule:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "event.category": "authentication" }},
        { "match": { "event.outcome": "failure" }}
      ],
      "filter": {
        "range": {
          "@timestamp": {
            "gte": "now-5m"
          }
        }
      }
    }
  },
  "aggs": {
    "suspicious_ips": {
      "terms": {
        "field": "source.ip",
        "min_doc_count": 5
      }
    }
  }
}

Besonderer Fokus liegt hier auf:

7.3 E-Commerce und Produktsuche

7.3.1 Intelligente Produktkataloge

Ein Online-Händler implementiert eine fortgeschrittene Produktsuche mit Facettierung und personalisierten Empfehlungen.

Produktmapping-Beispiel:

{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "fields": {
          "suggest": {
            "type": "completion",
            "contexts": [{
              "name": "category",
              "type": "category"
            }]
          }
        }
      },
      "description": { "type": "text" },
      "price": {
        "type": "nested",
        "properties": {
          "amount": { "type": "double" },
          "currency": { "type": "keyword" }
        }
      },
      "variants": {
        "type": "nested",
        "properties": {
          "color": { "type": "keyword" },
          "size": { "type": "keyword" },
          "stock": { "type": "integer" }
        }
      }
    }
  }
}

Implementierte Features:

7.3.2 Real-Time Inventory Management

Ein Multi-Channel-Händler benötigt Echtzeitübersicht über Lagerbestände in verschiedenen Filialen.

Beispiel einer Inventory-Aggregation:

{
  "aggs": {
    "stock_by_location": {
      "terms": {
        "field": "store_id"
      },
      "aggs": {
        "low_stock_products": {
          "bucket_selector": {
            "buckets_path": {
              "stock": "stock_sum"
            },
            "script": "params.stock < 10"
          }
        },
        "stock_sum": {
          "sum": {
            "field": "quantity"
          }
        }
      }
    }
  }
}

Zentrale Aspekte:

7.4 IoT und Zeitreihendaten

7.4.1 Industrielles IoT-Monitoring

Ein Produktionsunternehmen überwacht Tausende von Sensoren in Echtzeit.

Beispiel einer Sensor-Datenstruktur:

{
  "settings": {
    "index": {
      "number_of_shards": 6,
      "number_of_replicas": 1,
      "refresh_interval": "5s"
    }
  },
  "mappings": {
    "properties": {
      "sensor_id": { "type": "keyword" },
      "timestamp": { "type": "date" },
      "measurements": {
        "type": "nested",
        "properties": {
          "type": { "type": "keyword" },
          "value": { "type": "float" },
          "unit": { "type": "keyword" }
        }
      },
      "location": {
        "type": "geo_point"
      },
      "status": { "type": "keyword" }
    }
  }
}

Implementierte Funktionen:

Die Vielfalt dieser Anwendungsfälle zeigt die Flexibilität und Leistungsfähigkeit von OpenSearch und Elasticsearch. Jeder Use Case bringt seine eigenen Herausforderungen mit sich, die durch geschickte Kombination der verfügbaren Features gelöst werden können. Die Schlüssel zum Erfolg sind dabei:

Diese Beispiele dienen als Inspiration und Ausgangspunkt für eigene Implementierungen, wobei die konkreten Anforderungen des jeweiligen Projekts natürlich immer individuell berücksichtigt werden müssen.