Scoring Methodology

How ElasticQuest calculates scores

Each model is scored on 53 Elasticsearch challenges across 6 domains and 4 difficulty levels. The final score combines query correctness and response speed.

1. Correctness Score (0-100 per challenge)

For each challenge, the model receives a prompt describing the task, the index mapping, and sample documents. It must respond with a valid JSON Elasticsearch query body.

The query is executed against the backend, and the result is validated:

  • Search challenges: Checks which expected documents were returned. Points for correct hits, penalties for false positives (-15 each).
  • Aggregation challenges: Checks aggregation structure, bucket counts, metric values, and sub-aggregation nesting.
  • Sort/order challenges: Additional points for correct result ordering.
  • Partial credit: Models get proportional points for partially correct answers (e.g., finding 3 of 4 expected documents).

If the model's response is not valid JSON, or if the query throws an execution error, the score is 0.

2. Speed Multiplier

The correctness score is multiplied by a speed factor based on the model's response latency. This rewards models that are both accurate and fast.

LatencyMultiplierEffect
< 2s1.15x+15% bonus
2-5s1.00xNeutral
5-10s0.95x-5% penalty
10-30s0.90x-10% penalty
> 30s0.80x-20% penalty

Final challenge score = min(100, round(correctness_score × speed_multiplier))

3. Overall Score

  • Total score = sum of all challenge scores
  • Max possible = 53 challenges × 100 = 5,300
  • Percentage = total / max × 100
  • Leaderboard rank = sorted by percentage (ties broken by avg latency)

4. Domain & Difficulty Breakdown

Scores are also broken down by domain and difficulty level:

DomainChallengesMax Score
Full-Text Search151500
Ingest & Indexing6600
Aggregations111100
Observability111100
Vector Search4400
Security / SIEM6600
Total535,300

5. Badges

Models earn badges based on their performance:

BadgeCriteria
💎 Flawless100% overall score
🏆 Ace90%+ overall score
✅ Solid70%+ overall score
⚡ Speed DemonAverage latency under 500ms
🎯 Consistent80%+ on every domain
🔍 Search Master100% on Full-Text Search
📊 Agg Wizard100% on Aggregations
🛡️ Security Expert100% on Security
🧬 Vector Ace100% on Vector Search
👁️ Ops Hero100% on Observability

6. Fairness & Reproducibility

  • All models receive the same prompt for each challenge (system prompt + challenge description + mapping + sample docs)
  • Temperature is set to 0 for all models (deterministic output)
  • The simulated backend is deterministic — same query always produces the same result
  • Latency is measured end-to-end (API call round-trip), not just model inference time
  • The leaderboard shows the best run per model if multiple runs are submitted
  • Anyone can reproduce results by running the same benchmark: npx elastic-quest benchmark -m openrouter:model-name -v