Bird
Raised Fist0
Elasticsearchquery~5 mins

Index patterns for time-series in Elasticsearch - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Index patterns for time-series
O(n)
Understanding Time Complexity

When working with time-series data in Elasticsearch, how fast queries run depends on how indexes are organized.

We want to understand how the number of indexes affects the time it takes to search data.

Scenario Under Consideration

Analyze the time complexity of this index pattern query.


GET /logs-2023.06.01,logs-2023.06.02,logs-2023.06.03/_search
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "2023-06-01T00:00:00",
        "lt": "2023-06-04T00:00:00"
      }
    }
  }
}
    

This query searches across three daily indexes for logs within a date range.

Identify Repeating Operations

Look at what repeats when the query runs.

  • Primary operation: Searching each index separately.
  • How many times: Once per index included in the pattern.
How Execution Grows With Input

As you add more daily indexes to the pattern, the query runs on more indexes.

Input Size (number of indexes)Approx. Operations
1010 searches
100100 searches
10001000 searches

Pattern observation: The work grows directly with the number of indexes searched.

Final Time Complexity

Time Complexity: O(n)

This means the query time grows linearly as you add more indexes to search.

Common Mistake

[X] Wrong: "Searching multiple indexes is as fast as searching one because Elasticsearch is fast."

[OK] Correct: Each index adds extra work because Elasticsearch searches them in parallel, but the total work still grows with the number of indexes.

Interview Connect

Understanding how index patterns affect query time helps you design better data storage and faster searches in real projects.

Self-Check

"What if we combined daily indexes into one big index? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of using index patterns in Elasticsearch for time-series data?
easy
A. To group multiple time-based indexes for easier searching
B. To store data permanently without deletion
C. To create visual dashboards automatically
D. To encrypt data in the indexes

Solution

  1. Step 1: Understand index patterns role

    Index patterns help combine many time-based indexes so you can search them all at once.
  2. Step 2: Compare options

    Only grouping multiple time-based indexes matches the main purpose; others are unrelated.
  3. Final Answer:

    To group multiple time-based indexes for easier searching -> Option A
  4. Quick Check:

    Index patterns = group time-based indexes [OK]
Hint: Index patterns group many indexes by time for easy search [OK]
Common Mistakes:
  • Thinking index patterns store data permanently
  • Confusing index patterns with dashboards
  • Assuming index patterns encrypt data
2. Which of the following is the correct syntax for an index pattern matching daily logs from January 2024 in Elasticsearch?
easy
A. logs-2024.01.*
B. logs-2024-01-*
C. logs_2024-01-*
D. logs-01-2024-*

Solution

  1. Step 1: Identify date format in index pattern

    Elasticsearch uses dash-separated date parts like YYYY-MM-DD, so logs-2024-01-* matches daily logs in January 2024.
  2. Step 2: Check other options

    logs-2024.01.* uses dots instead of dashes, which is incorrect. logs_2024-01-* uses underscore instead of dash. logs-01-2024-* has wrong order of date parts.
  3. Final Answer:

    <code>logs-2024-01-*</code> -> Option B
  4. Quick Check:

    Date format YYYY-MM-DD with dashes = logs-2024-01-* [OK]
Hint: Use dashes YYYY-MM-DD in index patterns for dates [OK]
Common Mistakes:
  • Using dots instead of dashes in date format
  • Mixing underscores and dashes incorrectly
  • Reordering date parts wrongly
3. Given the index pattern metrics-2023.12.* and indexes metrics-2023.12.01, metrics-2023.11.30, metrics-2023.12.15, which indexes will match the pattern?
medium
A. metrics-2023.11.30 only
B. All three indexes
C. metrics-2023.12.01 and metrics-2023.12.15
D. None of the indexes

Solution

  1. Step 1: Understand the pattern metrics-2023.12.*

    This pattern matches indexes starting with 'metrics-2023.12.' followed by anything, so it matches December 2023 indexes.
  2. Step 2: Check each index

    metrics-2023.12.01 and metrics-2023.12.15 match December 2023; metrics-2023.11.30 is November, so it does not match.
  3. Final Answer:

    <code>metrics-2023.12.01</code> and <code>metrics-2023.12.15</code> -> Option C
  4. Quick Check:

    Pattern matches December indexes only = metrics-2023.12.01 and metrics-2023.12.15 [OK]
Hint: Wildcards match only after specified prefix [OK]
Common Mistakes:
  • Assuming wildcard matches all months
  • Ignoring exact prefix before wildcard
  • Confusing dot and dash separators
4. You created an index pattern logs-2023-1* to match logs from January 2023, but it also matches October and November indexes. What is the likely mistake?
medium
A. The dash (-) should be a dot (.) in the pattern
B. Index patterns cannot match months, only years
C. The pattern should be logs-2023-1? instead of *
D. Using wildcard * after 1 matches months starting with 1 and 10

Solution

  1. Step 1: Analyze wildcard usage in logs-2023-1*

    The wildcard * matches any characters after '1', so it matches '1...' (January) but also '10', '11' because '10' and '11' start with '1' in pattern matching.
  2. Step 2: Understand why October and November match

    Because the pattern matches any string starting with '1', it also matches '10' and '11' incorrectly.
  3. Final Answer:

    Using wildcard * after 1 matches months starting with 1 and 10 -> Option D
  4. Quick Check:

    Wildcard * after 1 matches more than intended = Using wildcard * after 1 matches months starting with 1 and 10 [OK]
Hint: Wildcard * matches any characters, not just one digit [OK]
Common Mistakes:
  • Thinking * matches only one character
  • Confusing dash and dot separators
  • Believing index patterns can't match months
5. You want to create an index pattern that matches all daily indexes for the year 2024 named like events-2024-03-15. Which pattern correctly matches all days in March 2024 but excludes other months?
hard
A. events-2024-03-??
B. events-2024-03-* and events-2024-04-*
C. events-2024-03-??*
D. events-2024-03-*

Solution

  1. Step 1: Understand pattern to match daily dates

    Daily indexes have two-digit day numbers, so ?? matches exactly two characters (days 01 to 31).
  2. Step 2: Compare options

    events-2024-03-* uses *, which matches any length, possibly including invalid days. events-2024-03-?? uses ?? to match exactly two digits. events-2024-03-??* allows extra characters after two digits, which is incorrect. events-2024-03-* and events-2024-04-* includes April, which should be excluded.
  3. Final Answer:

    <code>events-2024-03-??</code> -> Option A
  4. Quick Check:

    Two-question marks match exact two-digit days = events-2024-03-?? [OK]
Hint: Use ?? to match exactly two characters (days) in index pattern [OK]
Common Mistakes:
  • Using * which matches any length, not exact days
  • Including extra months by mistake
  • Using patterns that allow invalid day 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