Visualization types in Elasticsearch - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we create visualizations in Elasticsearch, we want to know how the time to build them changes as we add more data.
We ask: How does the work grow when the data or buckets increase?
Analyze the time complexity of the following aggregation for a visualization.
GET /sales/_search
{
"size": 0,
"aggs": {
"by_category": {
"terms": { "field": "category.keyword", "size": 10 },
"aggs": {
"avg_price": { "avg": { "field": "price" } }
}
}
}
}
This query groups sales by category and calculates the average price per category for visualization.
Look at what repeats as data grows.
- Primary operation: Elasticsearch scans all documents to group them by category.
- How many times: Once per document, then it processes each category bucket (up to 10 here).
As the number of documents grows, Elasticsearch must check each one once.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 document checks + 10 buckets |
| 100 | About 100 document checks + 10 buckets |
| 1000 | About 1000 document checks + 10 buckets |
Pattern observation: The work grows roughly in direct proportion to the number of documents.
Time Complexity: O(n)
This means the time to build the visualization grows linearly with the number of documents.
[X] Wrong: "The number of buckets (like categories) makes the time grow a lot more than the documents."
[OK] Correct: The main work is scanning documents once; buckets add some work but usually less than scanning all data.
Understanding how Elasticsearch handles data for visualizations helps you explain performance clearly and shows you know how data size affects response time.
"What if we increased the bucket size from 10 to 1000? How would the time complexity change?"
Practice
Solution
Step 1: Understand visualization purpose
Pie charts are designed to show parts of a whole by dividing a circle into slices.Step 2: Match visualization to data type
Since the question asks for parts of a whole, pie chart fits best over line or bar charts which show trends or comparisons.Final Answer:
Pie chart -> Option CQuick Check:
Parts of whole = Pie chart [OK]
- Choosing bar chart for parts of whole
- Confusing line chart with pie chart
- Using data table instead of visual chart
Solution
Step 1: Identify aggregation for categories
Terms aggregation groups data by unique values, perfect for categories.Step 2: Match aggregation to bar chart data
Bar charts often show counts per category, so terms aggregation is correct.Final Answer:
terms aggregation -> Option AQuick Check:
Category counts = terms aggregation [OK]
- Using avg or max aggregation for counts
- Choosing date_histogram for non-date data
- Confusing aggregation types
{"buckets": [{"key_as_string": "2024-01-01", "doc_count": 10}, {"key_as_string": "2024-01-02", "doc_count": 15}]}What will the line chart display?
Solution
Step 1: Read aggregation buckets
The buckets show counts 10 on Jan 1 and 15 on Jan 2.Step 2: Interpret line chart trend
The line chart plots these points over time, so it rises from 10 to 15.Final Answer:
A line rising from 10 to 15 between Jan 1 and Jan 2 -> Option AQuick Check:
Counts increase over time = rising line [OK]
- Assuming flat line despite different counts
- Thinking data format is invalid
- Reversing the trend direction
Solution
Step 1: Understand pie chart data needs
Pie charts require terms aggregation to split data into categories.Step 2: Identify cause of single slice
If a single metric aggregation is used, it returns one value, so pie chart shows one slice.Final Answer:
The aggregation used is a single metric, not a terms aggregation -> Option BQuick Check:
Single slice = single metric aggregation [OK]
- Blaming Kibana for unsupported visualization
- Assuming no data causes single slice
- Thinking date range affects slice count
Solution
Step 1: Choose visualization for monthly trends
Line chart is best for showing trends over time; date_histogram groups data by month.Step 2: Choose visualization for category distribution
Pie chart shows parts of whole; terms aggregation groups by category.Final Answer:
Line chart with date_histogram aggregation for trends, pie chart with terms aggregation for categories -> Option DQuick Check:
Trends = line + date_histogram; categories = pie + terms [OK]
- Mixing pie chart with date_histogram aggregation
- Using avg or max aggregation for category grouping
- Choosing data table instead of visual charts
