Bird
Raised Fist0
Elasticsearchquery~5 mins

Function score query in Elasticsearch - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a function score query in Elasticsearch?
A function score query lets you modify the score of documents returned by a query using functions like boosting, decay, or script scoring. It helps customize how results are ranked.
Click to reveal answer
beginner
Name two common functions used inside a function score query.
Common functions include weight (to boost scores by a fixed number) and decay functions like gauss or exp that reduce scores based on distance from a point.
Click to reveal answer
intermediate
What does the boost_mode parameter do in a function score query?
boost_mode controls how the original query score and the function score combine. Options include multiply, sum, replace, and more.
Click to reveal answer
intermediate
Explain the purpose of the score_mode in a function score query.
score_mode defines how multiple functions' scores combine when more than one function applies. For example, sum adds them, multiply multiplies them, and max picks the highest.
Click to reveal answer
beginner
Show a simple example of a function score query that boosts documents with a field is_featured set to true.
Example:
{
  "query": {
    "function_score": {
      "query": { "match_all": {} },
      "functions": [
        {
          "filter": { "term": { "is_featured": true } },
          "weight": 5
        }
      ],
      "boost_mode": "multiply"
    }
  }
}
Click to reveal answer
What does a function score query primarily do in Elasticsearch?
AModify the score of documents returned by a query
BChange the index mapping
CDelete documents from the index
DCreate a new index
Which parameter controls how the original score and function score combine?
Ascore_mode
Bquery_mode
Cfilter_mode
Dboost_mode
If you want to add scores from multiple functions, which score_mode should you use?
Asum
Bmultiply
Cmax
Dreplace
Which function would you use to boost documents with a specific field value?
Agauss
Bscript_score
Cweight
Drandom_score
What is the effect of setting boost_mode to replace?
AOriginal score is multiplied by function score
BFunction score replaces the original score
CScores are added together
DScores are averaged
Describe what a function score query is and why you might use it.
Think about how you can change the importance of search results.
You got /4 concepts.
    Explain the difference between boost_mode and score_mode in a function score query.
    One controls original vs function, the other controls multiple functions.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a function_score query in Elasticsearch?
      easy
      A. To update documents in the index
      B. To filter documents based on exact matches only
      C. To customize how search results are ranked by modifying their scores
      D. To delete documents matching a query

      Solution

      1. Step 1: Understand the role of function_score query

        The function_score query is designed to change the score of documents returned by a query, allowing customization of ranking.
      2. Step 2: Compare with other query types

        Filtering or updating documents are different operations; function_score specifically adjusts scoring.
      3. Final Answer:

        To customize how search results are ranked by modifying their scores -> Option C
      4. Quick Check:

        Function score query = Custom ranking [OK]
      Hint: Function score changes ranking by adjusting scores [OK]
      Common Mistakes:
      • Confusing function_score with filtering queries
      • Thinking it updates or deletes documents
      • Assuming it only filters exact matches
      2. Which of the following is the correct basic structure of a function_score query in Elasticsearch?
      easy
      A. { "function_score": { "query": { ... }, "functions": [ ... ] } }
      B. { "function_score": [ { "query": { ... } }, { "functions": [ ... ] } ] }
      C. { "query": { "function_score": { "functions": [ ... ] } } }
      D. { "functions": { "function_score": { "query": { ... } } } }

      Solution

      1. Step 1: Recall function_score query JSON format

        The function_score query wraps a query and a list of scoring functions inside an object with keys "query" and "functions".
      2. Step 2: Validate option structure

        { "function_score": { "query": { ... }, "functions": [ ... ] } } correctly shows the function_score object containing "query" and "functions" keys as expected.
      3. Final Answer:

        { "function_score": { "query": { ... }, "functions": [ ... ] } } -> Option A
      4. Quick Check:

        Correct JSON structure = { "function_score": { "query": { ... }, "functions": [ ... ] } } [OK]
      Hint: Look for "function_score" with nested "query" and "functions" keys [OK]
      Common Mistakes:
      • Using arrays instead of objects for function_score
      • Placing functions outside function_score
      • Incorrect nesting of query and functions
      3. Given this function_score query snippet, what is the effect of the weight parameter?
      {
        "function_score": {
          "query": { "match": { "title": "elasticsearch" } },
          "functions": [
            { "weight": 3 }
          ]
        }
      }
      medium
      A. It adds 3 points to the original score
      B. It multiplies the original score of matching documents by 3
      C. It filters out documents with score less than 3
      D. It sets the score of all documents to 3

      Solution

      1. Step 1: Understand the weight function in function_score

        The weight function multiplies the score of matching documents by the given weight value.
      2. Step 2: Analyze the query snippet

        The query matches documents with "title" containing "elasticsearch" and applies a weight of 3, multiplying their scores by 3.
      3. Final Answer:

        It multiplies the original score of matching documents by 3 -> Option B
      4. Quick Check:

        Weight multiplies score = It multiplies the original score of matching documents by 3 [OK]
      Hint: Weight multiplies scores, not adds or filters [OK]
      Common Mistakes:
      • Thinking weight adds to score instead of multiplying
      • Confusing weight with filtering
      • Assuming weight sets fixed score
      4. Identify the error in this function_score query:
      {
        "function_score": {
          "query": { "match": { "content": "search" } },
          "functions": {
            "weight": 2
          }
        }
      }
      medium
      A. Missing "score_mode" field
      B. "weight" cannot be used inside functions
      C. "query" must be inside "functions"
      D. "functions" should be an array, not an object

      Solution

      1. Step 1: Check the type of "functions" field

        The "functions" field must be an array of function objects, not a single object.
      2. Step 2: Identify the error in the query

        Here, "functions" is incorrectly given as an object with "weight" key instead of an array containing that object.
      3. Final Answer:

        "functions" should be an array, not an object -> Option D
      4. Quick Check:

        Functions must be array = "functions" should be an array, not an object [OK]
      Hint: Functions must be an array of objects [OK]
      Common Mistakes:
      • Using object instead of array for functions
      • Placing query inside functions
      • Assuming score_mode is mandatory
      5. You want to boost documents with a popularity field greater than 10 by a factor of 5 using a function_score query. Which snippet correctly applies this boost?
      hard
      A. { "function_score": { "query": { "match_all": {} }, "functions": [ { "filter": { "range": { "popularity": { "gt": 10 } } }, "weight": 5 } ] } }
      B. { "function_score": { "query": { "range": { "popularity": { "gt": 10 } } }, "weight": 5 } }
      C. { "function_score": { "query": { "match_all": {} }, "weight": 5, "filter": { "range": { "popularity": { "gt": 10 } } } } }
      D. { "function_score": { "query": { "match_all": {} }, "functions": { "weight": 5, "filter": { "range": { "popularity": { "gt": 10 } } } } } }

      Solution

      1. Step 1: Understand boosting with filter and weight

        To boost only documents matching a condition, use a function with a "filter" and a "weight" inside the "functions" array.
      2. Step 2: Analyze each option

        { "function_score": { "query": { "match_all": {} }, "functions": [ { "filter": { "range": { "popularity": { "gt": 10 } } }, "weight": 5 } ] } } correctly uses "functions" as an array with a filter on popularity > 10 and weight 5. Other options misuse weight placement or structure.
      3. Final Answer:

        { "function_score": { "query": { "match_all": {} }, "functions": [ { "filter": { "range": { "popularity": { "gt": 10 } } }, "weight": 5 } ] } } -> Option A
      4. Quick Check:

        Filter + weight inside functions array = { "function_score": { "query": { "match_all": {} }, "functions": [ { "filter": { "range": { "popularity": { "gt": 10 } } }, "weight": 5 } ] } } [OK]
      Hint: Use filter and weight inside functions array to boost conditionally [OK]
      Common Mistakes:
      • Placing weight outside functions array
      • Using object instead of array for functions
      • Applying weight directly on query instead of functions
      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