Elasticsearch Query DSL für komplexe Suche.
Match¶
GET /articles/_search
{
"query": {
"match": {
"title": "elasticsearch tutorial"
}
}
}
Bool¶
{
"query": {
"bool": {
"must": [{"match": {"content": "kubernetes"}}],
"filter": [
{"term": {"tags": "devops"}},
{"range": {"published_at": {"gte": "2024-01-01"}}}
]
}
}
}
Aggregationen¶
{
"size": 0,
"aggs": {
"by_tag": {"terms": {"field": "tags", "size": 20}},
"avg_views": {"avg": {"field": "views"}}
}
}
Praktische Abfrage-Tipps¶
Verwenden Sie in Produktionsumgebungen immer den filter-Kontext statt must fuer Bedingungen, die kein Scoring benoetigen (Datum, Status, Typ). Filter werden gecacht und sind deutlich schneller. Eine Bool-Query mit must fuer Relevanz und filter fuer Einschraenkungen ist das haeufigste Muster.
Vermeiden Sie bei der Paginierung grosser Ergebnismengen Deep Pagination (from + size > 10.000). Verwenden Sie stattdessen search_after mit der Point-in-Time-API, die effizienter und konsistenter ist. Aggregationen sind ein maechnologisches Werkzeug fuer Analytik — sie ermoeglichen das Berechnen von Statistiken, Erstellen von Histogrammen und Bucket-Analysen direkt in Elasticsearch, ohne Daten in ein externes Tool exportieren zu muessen.
Query DSL = Leistungsstark¶
Bool-Abfragen + Aggregationen decken die meisten Anforderungen ab.