An index mapping defines how documents and their fields are stored and indexed in Elasticsearch. It tells Elasticsearch the data types and rules for each field.
Click to reveal answer
beginner
Why do we need to define data types in index mappings?
Data types help Elasticsearch understand how to store, search, and sort the data correctly. For example, numbers, dates, and text are handled differently.
Click to reveal answer
intermediate
What happens if you don't define a mapping for a field in Elasticsearch?
Elasticsearch tries to guess the data type automatically using dynamic mapping. But this can lead to unexpected results or inefficient searches.
Click to reveal answer
intermediate
How can you change a field's mapping after the index is created?
You cannot change a field's mapping directly after creation. Instead, you create a new index with the desired mapping and reindex your data.
Click to reveal answer
beginner
What is the difference between 'text' and 'keyword' data types in Elasticsearch mappings?
'text' is used for full-text search and is analyzed (broken into words). 'keyword' is for exact matches and sorting, stored as is without analysis.
Click to reveal answer
What does an Elasticsearch index mapping define?
AThe hardware requirements for Elasticsearch
BThe network settings of Elasticsearch
CThe user permissions for the index
DHow documents and fields are stored and indexed
✗ Incorrect
Index mapping defines how documents and their fields are stored and indexed in Elasticsearch.
Which data type should you use for full-text search in Elasticsearch?
Akeyword
Binteger
Ctext
Ddate
✗ Incorrect
'text' type is used for full-text search because it is analyzed into words.
What happens if you add a new field without defining it in the mapping?
AElasticsearch guesses the data type using dynamic mapping
BYou must restart Elasticsearch
CThe field is ignored
DElasticsearch rejects the document
✗ Incorrect
Elasticsearch uses dynamic mapping to guess the data type automatically.
Can you change a field's data type in an existing Elasticsearch index mapping?
ANo, you must create a new index and reindex
BYes, anytime
COnly if the index is empty
DOnly for text fields
✗ Incorrect
You cannot change a field's mapping after creation; you must create a new index and reindex data.
Which mapping type is best for sorting exact values?
Atext
Bkeyword
Cdate
Dboolean
✗ Incorrect
'keyword' type stores exact values and is best for sorting and filtering.
Explain what an Elasticsearch index mapping is and why it is important.
Think about how Elasticsearch knows what kind of data each field holds.
You got /3 concepts.
Describe the difference between 'text' and 'keyword' data types in Elasticsearch mappings and when to use each.
Consider searching for words versus filtering exact values.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of index mappings in Elasticsearch?
easy
A. To monitor server health
B. To create user accounts for Elasticsearch
C. To backup data automatically
D. To define how data fields are stored and searched
Solution
Step 1: Understand the role of index mappings
Index mappings tell Elasticsearch how to store and interpret each field in your data.
Step 2: Compare options with this role
Only To define how data fields are stored and searched matches this purpose; others relate to unrelated tasks.
Final Answer:
To define how data fields are stored and searched -> Option D
Quick Check:
Index mappings = data structure definition [OK]
Hint: Mappings control data structure and search behavior [OK]
Common Mistakes:
Confusing mappings with user management
Thinking mappings handle backups
Assuming mappings monitor server health
2. Which of the following is the correct way to define a text field in an Elasticsearch mapping?
easy
A. "name": { "type": "text" }
B. "name": { "type": "keyword" }
C. "name": { "type": "integer" }
D. "name": { "type": "date" }
Solution
Step 1: Identify the correct field type for text data
Text fields in Elasticsearch use the type "text" for full-text search.
Step 2: Match the option with the correct type
"name": { "type": "text" } correctly uses "text"; others use types for keywords, numbers, or dates.
Final Answer:
"name": { "type": "text" } -> Option A
Quick Check:
Text fields = type "text" [OK]
Hint: Use "text" type for searchable text fields [OK]
What will happen if you try to search for documents with name containing partial words?
medium
A. Partial word matches will work because keyword fields support full-text search
B. Partial word matches will not work because keyword fields are exact values
C. Elasticsearch will throw a syntax error
D. Partial word matches will work only if age is also searched
Solution
Step 1: Understand keyword field behavior
Keyword fields store exact values and do not support partial or full-text search.
Step 2: Analyze the search behavior for partial words
Since name is keyword type, partial matches will fail; only exact matches work.
Final Answer:
Partial word matches will not work because keyword fields are exact values -> Option B
Quick Check:
Keyword = exact match only [OK]
Hint: Keyword fields do exact matches only, no partial search [OK]
Common Mistakes:
Assuming keyword fields support partial matching
Expecting syntax errors from valid mappings
Confusing integer field with text search behavior
4. You defined this mapping:
{ "properties": { "date": { "type": "text" } } }
What is the problem with this mapping if you want to filter by date range?
medium
A. The field name "date" is reserved and cannot be used
B. There is no problem; text type works for date filtering
C. The type should be "date" to enable date range filtering
D. You must add "index": false to filter by date
Solution
Step 1: Identify the correct type for date fields
Date range filtering requires the field to be of type "date" in Elasticsearch.
Step 2: Check the given mapping type
The mapping uses "text" type, which is not suitable for date operations like range filtering.
Final Answer:
The type should be "date" to enable date range filtering -> Option C
Quick Check:
Date filtering needs type "date" [OK]
Hint: Use type "date" for date range filters [OK]
Common Mistakes:
Using text type for date fields
Thinking field names are reserved keywords
Adding index false disables searching, not filtering
5. You want to store a user's profile with fields: username (exact match), bio (full-text search), and signup_date (date range queries). Which mapping correctly defines these fields?
Username needs exact matches, so "keyword" is correct. Bio needs full-text search, so "text" is correct. Signup_date needs date range queries, so "date" is correct.