Bird
Raised Fist0
Elasticsearchquery~20 mins

Text vs keyword field types in Elasticsearch - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Elasticsearch Text vs Keyword 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 Elasticsearch query?

Given the following mapping and query, what will be the result count?

{
  "mappings": {
    "properties": {
      "name": { "type": "text" },
      "category": { "type": "keyword" }
    }
  }
}

POST /products/_search
{
  "query": {
    "term": { "category": "electronics" }
  }
}
AReturns no documents because 'term' query does not work on keyword fields
BReturns all documents where the category exactly matches 'electronics'
CReturns documents where the name contains the word 'electronics'
DReturns documents where the category contains the word 'electronics' anywhere
Attempts:
2 left
💡 Hint

Remember that keyword fields are not analyzed and match exact values.

🧠 Conceptual
intermediate
2:00remaining
Why use 'text' type instead of 'keyword' for a field?

Which reason best explains why you would choose text type over keyword type for a field in Elasticsearch?

ATo enable full-text search with tokenization and analysis
BTo store exact values for filtering and sorting
CTo reduce index size by storing unanalyzed data
DTo improve performance of term queries
Attempts:
2 left
💡 Hint

Think about when you want to search inside the text rather than match exact values.

🔧 Debug
advanced
2:00remaining
Why does this term query return zero results?

Given this mapping and query, why does the term query return zero results?

{
  "mappings": {
    "properties": {
      "description": { "type": "text" }
    }
  }
}

POST /items/_search
{
  "query": {
    "term": { "description": "fast car" }
  }
}
ABecause the term query syntax is incorrect and should use 'match' instead
BBecause the index is empty and has no documents
CBecause the field 'description' is missing from the mapping
DBecause 'description' is a text field and term queries require exact matches, so 'fast car' as a whole does not match
Attempts:
2 left
💡 Hint

Think about how term queries work on text fields.

📝 Syntax
advanced
2:00remaining
Which mapping snippet correctly defines a field for exact filtering and full-text search?

Choose the correct mapping snippet that allows a field to be searched as full text and also filtered exactly.

A{ "title": { "type": "text", "fields": { "raw": { "type": "keyword" } } } }
B{ "title": { "type": "keyword", "fields": { "raw": { "type": "text" } } } }
C{ "title": { "type": "text" } }
D{ "title": { "type": "keyword" } }
Attempts:
2 left
💡 Hint

Think about multi-fields and how to support both search and filtering.

🚀 Application
expert
2:00remaining
How many unique values can be efficiently filtered using a keyword field?

In Elasticsearch, what is the practical limit on the number of unique values in a keyword field before performance degrades significantly?

AKeyword fields should only have a single unique value for best performance
BThere is no limit; keyword fields handle millions of unique values efficiently
CUp to a few thousand unique values is efficient; beyond that, performance may degrade
DKeyword fields are not used for filtering unique values
Attempts:
2 left
💡 Hint

Consider how Elasticsearch stores keyword terms and the impact on memory.

Practice

(1/5)
1. Which Elasticsearch field type should you use if you want to perform full-text search inside sentences?
easy
A. text
B. keyword
C. integer
D. date

Solution

  1. Step 1: Understand the purpose of text fields

    Text fields are designed for full-text search, allowing analysis and tokenization of sentences.
  2. Step 2: Compare with keyword fields

    Keyword fields are for exact matches and do not analyze the text, so they are not suitable for searching inside sentences.
  3. Final Answer:

    text -> Option A
  4. Quick Check:

    Full-text search = text [OK]
Hint: Full-text search needs analyzed text fields [OK]
Common Mistakes:
  • Choosing keyword for full-text search
  • Confusing integer or date types with text
  • Thinking keyword fields tokenize text
2. Which of the following is the correct way to define a keyword field in an Elasticsearch mapping?
easy
A. "name": { "type": "text" }
B. "name": { "type": "keyword" }
C. "name": { "type": "string" }
D. "name": { "type": "fulltext" }

Solution

  1. Step 1: Recall Elasticsearch field types

    Elasticsearch uses "keyword" as the type for exact match fields.
  2. Step 2: Identify the correct syntax

    "keyword" is the correct type name; "text" is for analyzed fields, "string" and "fulltext" are invalid types.
  3. Final Answer:

    "name": { "type": "keyword" } -> Option B
  4. Quick Check:

    Keyword field syntax = "name": { "type": "keyword" } [OK]
Hint: Keyword type is exactly "keyword" in mapping [OK]
Common Mistakes:
  • Using "string" instead of "keyword"
  • Confusing "text" with "keyword"
  • Using invalid type names like "fulltext"
3. Given this Elasticsearch mapping snippet:
{
  "properties": {
    "title": { "type": "text" },
    "category": { "type": "keyword" }
  }
}
Which query will correctly filter documents where category is exactly "books"?
medium
A. { "term": { "category": "books" } }
B. { "match": { "category": "books" } }
C. { "match": { "title": "books" } }
D. { "term": { "title": "books" } }

Solution

  1. Step 1: Identify field types and query types

    "category" is a keyword field, so exact match queries use "term" query.
  2. Step 2: Match query usage

    "match" queries are for full-text search on text fields, not exact matches on keyword fields.
  3. Final Answer:

    { "term": { "category": "books" } } -> Option A
  4. Quick Check:

    Exact filter on keyword = term query [OK]
Hint: Use term query for keyword fields exact match [OK]
Common Mistakes:
  • Using match query on keyword fields
  • Filtering text fields with term query expecting full-text search
  • Confusing field names in queries
4. You have this mapping:
{
  "properties": {
    "username": { "type": "keyword" },
    "bio": { "type": "text" }
  }
}
A developer tries to filter users with username containing "john" using this query:
{ "match": { "username": "john" } }
Why does this query not work as expected?
medium
A. Because match query only works on numeric fields
B. Because username field should be of type text for exact matches
C. Because match query does not work on keyword fields for partial matches
D. Because bio field should be used instead of username

Solution

  1. Step 1: Understand keyword field behavior

    Keyword fields are not analyzed and do not support partial matching with match query.
  2. Step 2: Understand match query limitations

    Match query analyzes input and is meant for text fields, not keyword fields which require term or wildcard queries for partial matches.
  3. Final Answer:

    Because match query does not work on keyword fields for partial matches -> Option C
  4. Quick Check:

    Match query + keyword field = no partial match [OK]
Hint: Match query needs text fields, not keyword [OK]
Common Mistakes:
  • Thinking keyword fields support partial match with match query
  • Confusing field types for filtering
  • Using match query on numeric or date fields
5. You want to store user tags in Elasticsearch so you can both filter by exact tag and search inside tag text. Which mapping setup is best?
hard
A. "tags": { "type": "text" }
B. "tags": { "type": "keyword" }
C. "tags": { "type": "keyword", "fields": { "analyzed": { "type": "text" } } }
D. "tags": { "type": "text", "fields": { "raw": { "type": "keyword" } } }

Solution

  1. Step 1: Understand the need for both full-text search and exact filtering

    Full-text search requires text type; exact filtering requires keyword type.
  2. Step 2: Use multi-fields to support both

    Mapping with "text" type and a subfield "raw" as "keyword" allows searching inside tags and filtering/sorting by exact tag.
  3. Final Answer:

    "tags": { "type": "text", "fields": { "raw": { "type": "keyword" } } } -> Option D
  4. Quick Check:

    Multi-fields = text + keyword for search and filter [OK]
Hint: Use multi-fields for both text search and exact filter [OK]
Common Mistakes:
  • Using only text type and expecting exact filters
  • Using only keyword type and expecting full-text search
  • Not defining subfields for multi-purpose queries
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