Elasticsearch Query DSL pro komplexní vyhledávání.
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”}}}] }}}
Agregace¶
{“size”:0,”aggs”:{ “by_tag”:{“terms”:{“field”:”tags”,”size”:20}}, “avg_views”:{“avg”:{“field”:”views”}} }}
Praktické tipy pro dotazy¶
V produkčním prostředí vždy používejte filter kontext místo must pro podmínky, které nepotřebují scoring (datum, status, typ). Filtry jsou cachované a výrazně rychlejší. Bool query s kombinací must pro relevanci a filter pro omezení je nejčastější vzor.
Pro stránkování velkých výsledků se vyhněte deep pagination (from + size > 10 000). Místo toho použijte search_after s point-in-time API, které je efektivnější a konzistentní. Agregace jsou mocný nástroj pro analytiku — umožňují počítat statistiky, vytvářet histogramy a bucket analýzy přímo v Elasticsearch bez nutnosti exportovat data do externího nástroje.
Query DSL = mocné¶
Bool queries + agregace pokryjí většinu potřeb.