Bird
Raised Fist0
Elasticsearchquery~20 mins

Constant score query in Elasticsearch - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Constant Score Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this constant_score query?
Given the following Elasticsearch query, what is the score of each document matching the filter?
Elasticsearch
{
  "query": {
    "constant_score": {
      "filter": {
        "term": { "status": "active" }
      },
      "boost": 5
    }
  }
}
AEach matching document has a score of 5
BEach matching document has a score equal to the term frequency of "active"
CEach matching document has a score of 1
DEach matching document has a score of 0
Attempts:
2 left
💡 Hint
Remember that constant_score sets the score to the boost value for all matching documents.
🧠 Conceptual
intermediate
1:30remaining
Why use a constant_score query instead of a match query?
Which of the following is the main reason to use a constant_score query?
ATo perform full-text search with relevance scoring
BTo sort documents by their field values
CTo assign the same score to all matching documents regardless of relevance
DTo update documents in the index
Attempts:
2 left
💡 Hint
Think about when you want to ignore relevance and just filter with a fixed score.
🔧 Debug
advanced
2:00remaining
Identify the error in this constant_score query
What error will this query produce?
Elasticsearch
{
  "query": {
    "constant_score": {
      "filter": {
        "match": { "title": "Elasticsearch" }
      },
      "boost": "high"
    }
  }
}
ASyntaxError: missing comma after filter
BTypeError: boost must be a number, not a string
CNo error, query runs successfully
DRuntimeError: match query not allowed inside constant_score
Attempts:
2 left
💡 Hint
Check the type of the boost value.
📝 Syntax
advanced
2:00remaining
Which option is the correct syntax for a constant_score query with a range filter?
Select the valid constant_score query that filters documents with age greater than 30 and assigns a boost of 3.
A{ "query": { "constant_score": { "filter": { "range": { "age": { "greater_than": 30 } } }, "boost": 3 } } }
B{ "query": { "constant_score": { "filter": { "range": { "age": { "min": 30 } } }, "boost": 3 } } }
C{ "query": { "constant_score": { "filter": { "range": { "age": { "gte": 30 } } }, "boost": 3 } } }
D{ "query": { "constant_score": { "filter": { "range": { "age": { "gt": 30 } } }, "boost": 3 } } }
Attempts:
2 left
💡 Hint
Check the correct range operator for greater than in Elasticsearch.
🚀 Application
expert
2:30remaining
How many documents will be scored with boost 10 in this query?
Assume the index has 1000 documents. 200 have field "category" equal to "books". What is the number of documents that will have a score of 10 after running this query?
Elasticsearch
{
  "query": {
    "constant_score": {
      "filter": {
        "term": { "category": "books" }
      },
      "boost": 10
    }
  }
}
A200
B1000
C0
D800
Attempts:
2 left
💡 Hint
Only documents matching the filter get the boost score.

Practice

(1/5)
1. What is the main purpose of a constant_score query in Elasticsearch?
easy
A. To filter documents and assign the same score to all matched documents
B. To sort documents by their relevance score
C. To perform a full-text search with varying scores
D. To aggregate documents by a field value

Solution

  1. Step 1: Understand the role of constant_score query

    The constant_score query filters documents and assigns the same score to all matches, ignoring relevance scoring.
  2. Step 2: Compare with other query types

    Unlike full-text queries that score by relevance, constant_score keeps scores equal for filtered documents.
  3. Final Answer:

    To filter documents and assign the same score to all matched documents -> Option A
  4. Quick Check:

    constant_score = equal scoring for filtered docs [OK]
Hint: Constant score means all matched docs get the same score [OK]
Common Mistakes:
  • Thinking it sorts by relevance
  • Confusing with full-text scoring
  • Assuming it aggregates data
2. Which of the following is the correct syntax to create a constant score query with a filter on field status equal to active?
easy
A. {"constant_score": {"filter": {"match": {"status": "active"}}}}
B. {"constant_score": {"query": {"term": {"status": "active"}}}}
C. {"constant_score": {"term": {"status": "active"}}}
D. {"constant_score": {"filter": {"term": {"status": "active"}}}}

Solution

  1. Step 1: Identify correct key for filtering

    The constant_score query uses the key "filter" to specify the filter clause, not "query" or direct term.
  2. Step 2: Check filter syntax

    The filter should be a term query inside the filter object, correctly written as {"term": {"status": "active"}}.
  3. Final Answer:

    {"constant_score": {"filter": {"term": {"status": "active"}}}} -> Option D
  4. Quick Check:

    Use "filter" with term inside constant_score [OK]
Hint: Use "filter" key with term query inside constant_score [OK]
Common Mistakes:
  • Using "query" instead of "filter"
  • Placing term query directly under constant_score
  • Using match instead of term for exact filter
3. Given this Elasticsearch query snippet, what will be the score of each matched document?
{
  "constant_score": {
    "filter": { "term": { "category": "books" } },
    "boost": 3
  }
}
medium
A. The score will vary based on relevance
B. The score will be 3 for all matched documents
C. The score will be 1 for all matched documents
D. The score will be 0 because boost is ignored

Solution

  1. Step 1: Understand constant_score with boost

    The constant_score query assigns the same score to all matched documents, and the boost multiplies that score.
  2. Step 2: Calculate the score

    By default, constant_score gives score 1, multiplied by boost 3, resulting in score 3 for all matches.
  3. Final Answer:

    The score will be 3 for all matched documents -> Option B
  4. Quick Check:

    constant_score x boost = 3 [OK]
Hint: Boost multiplies constant score, so score = boost value [OK]
Common Mistakes:
  • Assuming scores vary by relevance
  • Ignoring the boost value
  • Thinking boost is ignored in constant_score
4. Identify the error in this constant score query:
{
  "constant_score": {
    "filter": {
      "terms": {
        "tags": ["tech", "science"]
      }
    },
    "boost": "2"
  }
}
medium
A. The boost value should be a number, not a string
B. The filter key should be replaced with query
C. The terms query cannot be used inside constant_score
D. The tags field should be inside a match query

Solution

  1. Step 1: Check boost data type

    The boost parameter must be a numeric value, not a string. Here, "2" is a string, which is invalid.
  2. Step 2: Validate filter and terms usage

    Using "filter" with a "terms" query is valid syntax, so no error there.
  3. Final Answer:

    The boost value should be a number, not a string -> Option A
  4. Quick Check:

    boost must be numeric, not string [OK]
Hint: Boost must be a number, not quoted string [OK]
Common Mistakes:
  • Using string for boost instead of number
  • Replacing filter with query incorrectly
  • Misunderstanding terms query usage
5. You want to find all documents where status is published and boost their score by 5, but keep all matched documents scored equally. Which query correctly achieves this?
hard
A. { "match": { "status": "published", "boost": 5 } }
B. { "bool": { "must": { "term": { "status": "published" } }, "boost": 5 } }
C. { "constant_score": { "filter": { "term": { "status": "published" } }, "boost": 5 } }
D. { "constant_score": { "query": { "term": { "status": "published" } }, "boost": 5 } }

Solution

  1. Step 1: Use constant_score with filter and boost

    To keep scores equal and apply a boost, use constant_score with a filter clause and boost parameter.
  2. Step 2: Validate correct syntax

    { "constant_score": { "filter": { "term": { "status": "published" } }, "boost": 5 } } uses "filter" with a term query and numeric boost, which is the correct syntax.
  3. Step 3: Check other options

    { "bool": { "must": { "term": { "status": "published" } }, "boost": 5 } } uses bool query which scores by relevance, not constant. { "match": { "status": "published", "boost": 5 } } is a match query with boost but scores vary. { "constant_score": { "query": { "term": { "status": "published" } }, "boost": 5 } } incorrectly uses "query" instead of "filter" inside constant_score.
  4. Final Answer:

    { "constant_score": { "filter": { "term": { "status": "published" } }, "boost": 5 } } -> Option C
  5. Quick Check:

    constant_score + filter + boost = equal boosted scores [OK]
Hint: Use constant_score with filter and numeric boost for equal boosted scores [OK]
Common Mistakes:
  • Using query instead of filter inside constant_score
  • Using bool or match queries that score variably
  • Setting boost as string instead of number
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard