At a glance
Slow-Query Rate is the share of searches that breach the slowlog threshold, expressed as a percentage of total searches. By default Elasticsearch logs a query as slow when it crosses the configured search slowlog level (commonly 1 second on the query or fetch phase). This card divides the count of slowlog-flagged searches by the total search count over the window, so 5% means one search in twenty took longer than your slow threshold. Unlike a percentile latency card, which tells you how slow your typical or tail query is, this card tells you how often users hit a bad one. It is the card that catches a creeping share of pathological queries before they drag the whole percentile distribution down.
Calculation
The rate is the proportion of searches in the window that breached the slowlog threshold, grounded in the slowlog count and the total search count Elasticsearch tracks:index.search.slowlog.threshold.query.warn: 1s. Elasticsearch evaluates this per shard per phase (query phase and fetch phase), so a search that fans out to ten shards is counted slow if it breaches the threshold on the slow shard. Vortex IQ aggregates these to a cluster-wide rate.
The engine maps the rate to a sentiment: under 5% is healthy, 5% to 10% is a warning, and above 10% is critical because at that point more than one search in ten is breaching your own slow bar, which users feel as an inconsistent, sluggish experience. Because the denominator is total search volume, a low-traffic window with a handful of slow queries can read high; the 15-minute window and the headline volume context help avoid overreacting to a quiet period.
Worked example
A platform team runs a 5-node Elasticsearch 8.x cluster serving storefront search for a fashion retailer. The search slowlog query threshold is set to 1s. Normal slow-query rate sits around 1.2%. Snapshot taken on 02 Jun 26 at 11:48 BST. A new “filter by 30 attributes” faceted-search feature shipped at 11:00. By 11:45 the card has climbed from 1.2% to 8.4%, comfortably past the 5% alert line, while median latency barely moved (180 ms to 215 ms). The on-call reads it correctly: the median is fine because most searches are still simple keyword lookups, but a growing minority (the new faceted searches with huge aggregations) are blowing past 1s.- Is it volume or a regression? A regression. Total search volume is flat; the slow share jumped right after a deploy. A volume-driven spike would move both the numerator and the denominator together.
- Which queries are slow? The on-call pulls the slowlog and Top 10 Slow Searches. Nine of the ten are the new faceted aggregation. The new feature requests
termsaggregations across 30 high-cardinality fields in one pass. - Quick mitigation vs proper fix? Quick: cap the aggregation
sizeand lazy-load less-used facets so a single search does not compute all 30 at once. Proper: precompute the expensive facets or move them to a separate, cached aggregation call.
- Rate catches what percentiles hide. If most queries are fast, a growing tail of slow ones barely moves the median or even p95, but it directly hurts the unlucky users. Slow-query rate is the “how many people had a bad time” card.
- A deploy-correlated jump usually means a query regression. When the slow share steps up at a deploy boundary with flat volume, suspect the new query shape first: deep pagination, big aggregations, wildcards, or scripted sorts.
- Tune the slowlog threshold to your SLA, not the default. The 1s default is generic. If your search SLA is 500 ms, set the slowlog threshold there so this card reflects your definition of slow, not Elasticsearch’s.
Sibling cards platform teams should reference together
Reconciling against the source
Where to look in Elasticsearch’s own tooling:In managed services the slowlog and search stats are exposed the same way: Elastic Cloud ships slowlogs to the deployment’s logging, AWS OpenSearch/Elasticsearch Service publishes search slowlogs to CloudWatch Logs when enabled, and Bonsai exposes the slowlog through its dashboard. Why our value may legitimately differ from a manual check:GET /<index>/_settings?include_defaults=true&filter_path=**.slowlogto confirm the slowlog thresholds the rate is measured against. The search slowlog file (<cluster>_index_search_slowlog.jsonor.log) for the actual slow-query entries withtook, the query source and the shard.GET /_nodes/stats/thread_pool/searchfor completed search counts (the denominator) per node.GET /_stats/searchfor per-index search query counts and total time, to cross-check the ratio.
Cross-connector reconciliation:
Known limitations / FAQs
My slow-query rate is high but p95 latency looks fine. How? This is exactly what the rate card is for. If most queries are fast, a small but growing tail of very slow ones (say 6% of searches taking 3s) barely moves p95 because p95 is still inside the fast majority. The rate, however, divides slow by total and surfaces that tail. Pair with Search Latency p99 (ms), which is where those slow queries show up. The rate spiked but it was a quiet period with only a few searches. Is it real? Be careful with low-volume windows. With only 40 searches in 15 minutes, two slow ones read as 5%. The 15-minute window and the headline volume context help, but always check Search Queries per Second (live) alongside. A high rate over high volume is a real problem; a high rate over a handful of queries is usually noise. What threshold defines “slow”? Can I change it? The card uses your index search slowlog threshold, which defaults to 1s on the query phase. You can and should tune it to your search SLA viaindex.search.slowlog.threshold.query.warn. If your storefront target is 500 ms, set the threshold there so the card reflects your standard, not the generic default. Changing the threshold changes what the card counts as slow.
My slowlog is disabled. Does the card still work?
Partially. If the slowlog threshold is unset or disabled, Elasticsearch does not flag slow searches, so the numerator is unreliable and the rate may read near zero even when queries are slow. Enable the search slowlog with a sensible threshold to get an accurate rate. Without it, fall back to Search Latency p95 (ms) and p99.
A deploy pushed the rate up. How do I find the offending query?
Pull Top 10 Slow Searches and the raw slowlog file, which records the query source for each slow entry. Deploy-correlated rate jumps almost always trace to a new query shape: deep pagination (from + size into the thousands), large or nested aggregations, leading-wildcard queries, or scripted sorts. The slowlog names the exact query so you can reproduce and optimise it.
Does indexing load affect the slow-query rate?
Indirectly. Heavy indexing competes for CPU, heap and the search thread pool, which can slow searches and lift the rate, but the card itself measures only search timing versus the slowlog threshold. If the rate rises during heavy indexing, check Indexing Rate (docs/sec) and GC Pause Time (5m total ms) to see whether indexing pressure is the cause.
Right after a restart the rate spikes then settles. Why?
Cold caches. After a node restart the page cache, query cache and request cache are empty, so the first searches read from disk and run slower until the caches warm. This produces a transient slow-query spike that settles within minutes. It is expected and not a query regression; do not optimise queries in response to a post-restart warm-up spike.