Bird
Raised Fist0
Elasticsearchquery~20 mins

Date field types in Elasticsearch - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Date Field Mastery
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 date mapping query?
Given this Elasticsearch mapping for a date field, what will be the stored format of the date?

{
  "mappings": {
    "properties": {
      "created_at": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss||epoch_millis"
      }
    }
  }
}
Elasticsearch
POST /my_index/_doc
{
  "created_at": "2024-06-15 14:30:00"
}
AThe date is parsed and stored as milliseconds since epoch (epoch_millis)
BThe date is stored as a string exactly as "2024-06-15 14:30:00"
CThe date is stored as a Unix timestamp in seconds
DThe date is stored as a text field without parsing
Attempts:
2 left
💡 Hint
Check the format property and how Elasticsearch parses dates.
❓ Predict Output
intermediate
2:00remaining
What happens if a date does not match the format?
Consider this mapping:

{
  "mappings": {
    "properties": {
      "event_date": {
        "type": "date",
        "format": "yyyy/MM/dd"
      }
    }
  }
}

What happens if you index a document with:
{ "event_date": "2024-06-15" }
AElasticsearch throws a parsing exception and rejects the document
BThe event_date field is stored as null
CElasticsearch stores the date as a string without parsing
DThe document is indexed successfully with event_date parsed as 2024-06-15
Attempts:
2 left
💡 Hint
The date format must exactly match the input string.
🔧 Debug
advanced
2:00remaining
Why does this date mapping cause an error?
This mapping causes an error when creating the index:

{
  "mappings": {
    "properties": {
      "log_time": {
        "type": "date",
        "format": "strict_date_optional_time||epoch_millis||yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

What is the cause of the error?
AThe format string is missing a separator between formats
BThe format string uses an invalid date pattern with spaces
CThe format string is too long and exceeds Elasticsearch limits
DThe format string mixes strict and non-strict formats causing a conflict
Attempts:
2 left
💡 Hint
Check how strict_date_optional_time interacts with other formats.
🧠 Conceptual
advanced
2:00remaining
How does Elasticsearch handle multiple date formats in one field?
If a date field mapping specifies multiple formats separated by ||, how does Elasticsearch process an incoming date string?
AIt requires the date string to match all formats simultaneously
BIt uses only the first format and ignores the rest
CIt tries each format in order until one matches the date string
DIt randomly picks one format to parse the date string
Attempts:
2 left
💡 Hint
Think about how flexible date parsing works.
❓ Predict Output
expert
2:00remaining
What is the output of this date range query?
Given this mapping and documents:

{
  "mappings": {
    "properties": {
      "timestamp": {
        "type": "date",
        "format": "epoch_millis"
      }
    }
  }
}

POST /my_index/_bulk
{ "index": {} }
{ "timestamp": 1686787200000 }
{ "index": {} }
{ "timestamp": 1686873600000 }

What documents match this query?
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "1686787200000",
        "lt": "1686873600000"
      }
    }
  }
}
ANo documents match
BOnly the first document matches
CBoth documents match
DOnly the second document matches
Attempts:
2 left
💡 Hint
Check the range boundaries and timestamp values carefully.

Practice

(1/5)
1. What is the primary purpose of a date field type in Elasticsearch?
easy
A. To store and query time and date information
B. To store large text documents
C. To perform mathematical calculations
D. To store binary data

Solution

  1. Step 1: Understand the role of field types in Elasticsearch

    Field types define how data is stored and interpreted in Elasticsearch.
  2. Step 2: Identify the function of the date field type

    The date field type specifically stores time and date information for searching and sorting.
  3. Final Answer:

    To store and query time and date information -> Option A
  4. Quick Check:

    Date field = store time/date [OK]
Hint: Date fields store time info, not text or numbers [OK]
Common Mistakes:
  • Confusing date fields with text fields
  • Thinking date fields store binary data
  • Assuming date fields perform calculations
2. Which of the following is the correct way to define a date field with a custom format in an Elasticsearch mapping?
easy
A. { "mappings": { "properties": { "created_at": {"type": "integer", "format": "yyyy-MM-dd"} } } }
B. { "mappings": { "properties": { "created_at": {"type": "date", "format": "yyyy-MM-dd HH:mm:ss"} } } }
C. { "mappings": { "properties": { "created_at": {"type": "date"} } } }
D. { "mappings": { "properties": { "created_at": {"type": "text", "format": "yyyy-MM-dd"} } } }

Solution

  1. Step 1: Check the field type for date

    The field must have type set to date to store dates.
  2. Step 2: Verify the format property

    Custom date formats are specified with the format key inside the date field definition.
  3. Final Answer:

    Mapping with type 'date' and format 'yyyy-MM-dd HH:mm:ss' -> Option B
  4. Quick Check:

    Date type + format key = correct mapping [OK]
Hint: Date fields need type 'date' and format string [OK]
Common Mistakes:
  • Using type 'text' or 'integer' for date fields
  • Omitting the format when using custom date strings
  • Placing format outside the date field definition
3. Given this Elasticsearch mapping and document, what will be the stored value for the event_date field?
{
  "mappings": {
    "properties": {
      "event_date": { "type": "date", "format": "yyyy/MM/dd" }
    }
  }
}

Document:
{
  "event_date": "2024/06/15"
}
medium
A. Error: Invalid date format
B. "2024/06/15"
C. "2024-06-15T00:00:00.000Z"
D. "15-06-2024"

Solution

  1. Step 1: Understand the mapping format

    The mapping expects dates in the format "yyyy/MM/dd" which matches the document date "2024/06/15".
  2. Step 2: Know how Elasticsearch stores dates internally

    Elasticsearch converts dates to ISO 8601 format with time and timezone, so it stores "2024-06-15T00:00:00.000Z".
  3. Final Answer:

    "2024-06-15T00:00:00.000Z" -> Option C
  4. Quick Check:

    Input format matches mapping, stored as ISO date [OK]
Hint: Input matches format, stored as ISO 8601 date [OK]
Common Mistakes:
  • Expecting stored value to keep original format
  • Thinking Elasticsearch stores raw string
  • Confusing format mismatch errors
4. You defined a date field with format yyyy-MM-dd but indexing documents with dates like 2024/06/15 causes errors. What is the best fix?
medium
A. Change the mapping format to include yyyy/MM/dd
B. Convert all dates to yyyy-MM-dd before indexing
C. Change the field type to text
D. Remove the format from the mapping

Solution

  1. Step 1: Identify the cause of the error

    The document dates use slashes / but the mapping expects dashes -, causing format mismatch errors.
  2. Step 2: Fix the mapping to accept the document date format

    Update the mapping format to include yyyy/MM/dd so Elasticsearch can parse the input dates correctly.
  3. Final Answer:

    Change the mapping format to include yyyy/MM/dd -> Option A
  4. Quick Check:

    Mapping format must match input date format [OK]
Hint: Mapping format must match input date format exactly [OK]
Common Mistakes:
  • Changing field type to text loses date features
  • Removing format causes parsing errors if format differs
  • Not updating mapping when input format changes
5. You want to index documents with multiple date fields: created_at in ISO format and due_date in dd-MM-yyyy format. How should you define the mapping to handle both correctly?
hard
A. { "mappings": { "properties": { "created_at": { "type": "date", "format": "dd-MM-yyyy" }, "due_date": { "type": "date" } } } }
B. { "mappings": { "properties": { "created_at": { "type": "date", "format": "dd-MM-yyyy" }, "due_date": { "type": "date", "format": "dd-MM-yyyy" } } } }
C. { "mappings": { "properties": { "created_at": { "type": "text" }, "due_date": { "type": "text" } } } }
D. { "mappings": { "properties": { "created_at": { "type": "date" }, "due_date": { "type": "date", "format": "dd-MM-yyyy" } } } }

Solution

  1. Step 1: Understand the formats of each date field

    created_at uses ISO format (default), due_date uses custom dd-MM-yyyy format.
  2. Step 2: Define mapping with correct formats per field

    Set created_at as date with default format, and due_date as date with format: dd-MM-yyyy.
  3. Final Answer:

    Mapping with default date for created_at and custom format for due_date -> Option D
  4. Quick Check:

    Each date field needs correct format in mapping [OK]
Hint: Set format per date field to match its input format [OK]
Common Mistakes:
  • Using text type instead of date loses date features
  • Applying wrong format to a field causes parsing errors
  • Using same format for different date formats
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