Elite Edge
Cutting-edge Elastic capabilities, capacity planning methodology, and the differentiator: this lab itself as proof of hands-on competency.
ES|QL: Next-Generation Query Language
ES|QL (Elasticsearch Query Language) is a new pipe-based query language that provides a SQL-like experience for Elasticsearch. Unlike Query DSL (which is JSON-based and can be verbose), ES|QL uses a concise pipe syntax inspired by SPL and KQL.
// Find critical support tickets with high resolution time
FROM support-tickets
| WHERE severity == "critical" AND resolution_hours > 2
| SORT resolution_hours DESC
| KEEP ticket_id, title, severity, resolution_hours, customer_name
// Aggregate log levels with stats
FROM maclab-logs-*
| STATS count = COUNT(*), avg_size = AVG(message_length) BY log_level
| SORT count DESC
// Time-series analysis
FROM maclab-logs-*
| WHERE @timestamp > NOW() - 24 hours
| EVAL hour = DATE_EXTRACT("HOUR", @timestamp)
| STATS error_count = COUNT(*) BY hour
| SORT hour
// Join-like enrichment with ENRICH
FROM support-tickets
| ENRICH customer-info ON customer_name
| WHERE region == "APJ"
| STATS total_tickets = COUNT(*), avg_resolution = AVG(resolution_hours) BY customer_nameKey Advantages Over Query DSL
Readable pipe syntax: data flows left to right through transformations
Computed columns with EVAL: create new fields on-the-fly
No JSON nesting: dramatically simpler for complex queries
Built-in ENRICH: lookup enrichment without runtime fields
Runs on a new compute engine optimized for columnar processing
Vector Search & Semantic Search
Elasticsearch supports approximate k-nearest-neighbor (kNN) search using the HNSW (Hierarchical Navigable Small World) algorithm. This enables semantic search — finding documents by meaning rather than exact keyword match.
// Create index with dense_vector field
PUT /semantic-tickets
{
"mappings": {
"properties": {
"title": { "type": "text" },
"title_vector": {
"type": "dense_vector",
"dims": 384,
"index": true,
"similarity": "cosine"
}
}
}
}
// kNN search — find semantically similar tickets
POST /semantic-tickets/_search
{
"knn": {
"field": "title_vector",
"query_vector": [0.12, -0.34, ...], // 384-dim embedding
"k": 5,
"num_candidates": 100
}
}
// Hybrid search — combine kNN with BM25
POST /semantic-tickets/_search
{
"query": {
"match": { "title": "cluster health red" }
},
"knn": {
"field": "title_vector",
"query_vector": [0.12, -0.34, ...],
"k": 5,
"num_candidates": 100
},
"rank": {
"rrf": {} // Reciprocal Rank Fusion to combine scores
}
}HNSW Algorithm
Builds a multi-layer graph of vectors. Each layer is a navigable small world graph where nodes connect to nearby neighbors. Search starts at the top layer (sparse, long-range connections) and descends to the bottom layer (dense, precise connections). This gives O(log N) search time.
RRF: Reciprocal Rank Fusion
Combines results from different ranking methods (BM25 + kNN) without needing to normalize scores. Each result is scored based on its rank position: score = 1 / (k + rank). Results appearing in both lists get combined scores, naturally surfacing the most relevant documents.
Elastic 9.x & Beyond
BBQ (Better Binary Quantization) Vectors
A new vector quantization technique that reduces vector storage by up to 32x while maintaining search quality. Critical for scaling vector search to billions of documents without prohibitive memory costs.
Jina AI Acquisition
Elastic acquired Jina AI's embedding model technology, enabling native embedding generation within Elasticsearch. This removes the need for external embedding services, simplifying the vector search pipeline.
Serverless Elasticsearch
Elastic's serverless offering decouples compute from storage. Customers pay per query rather than per node, with automatic scaling. The indexing and search tiers scale independently.
Logsdb Index Mode
A new index mode optimized for log data that uses synthetic _source (reconstructed from doc_values) to reduce storage by 50-70%. Trades _source retrieval speed for significant storage savings.
Elastic AI Assistant
GenAI-powered assistant integrated into Kibana for observability and security workflows. Analyzes alerts, suggests root causes, and generates response playbooks using RAG over Elastic documentation.
Capacity Planning Methodology
Shard Sizing Rules
Target shard size: 10-50 GB for time-series data
Maximum recommended: 50 GB per shard (larger shards slow recovery)
Minimum meaningful: 1 GB per shard (smaller creates overhead)
Shards per GB heap: max 20 shards per GB of heap memory
For our cluster: 1 GB heap x 3 nodes x 20 = max 60 shards total
JVM Heap Rules
Never exceed 50% of available RAM
Never exceed 30-31 GB (compressed oops threshold)
Xms and Xmx must be equal (prevent heap resizing)
G1GC is default since ES 7.x — CMS is deprecated
Circuit Breakers
{
"indices.breaker.total.limit": "95%", // Total heap usage limit
"indices.breaker.fielddata.limit": "40%", // Fielddata cache limit
"indices.breaker.request.limit": "60%", // Per-request limit
"network.breaker.inflight_requests.limit": "100%" // In-flight requests
}
// When a circuit breaker trips:
// HTTP 429 — CircuitBreakingException
// "Data too large, data for [<field>] would be [X] bytes,
// which is larger than the limit of [Y]"
// Fix: reduce query scope, add more nodes, increase heap (if under 50%)The Differentiator: This Lab
I didn't just read about Elasticsearch — I built it.
This MacLab Elasticsearch deployment represents more than interview preparation. It's evidence of the approach I bring to every technical challenge: deploy it, break it, fix it, document it.
Cluster
3 Nodes
TLS encrypted
Languages
KR + EN
Nori tokenizer
Drills
3
Node, mapping, restore
Deployed a 3-node cluster with TLS inter-node and HTTP encryption
Configured Korean language support with Nori tokenizer (decompound_mode: mixed)
Built ingest pipelines with grok, date, and lowercase processors
Created bilingual support tickets (Korean and English)
Ran failure drills: node failure, mapping conflict, snapshot restore
Validated Korean text search: "클러스터 상태" returned 3 relevant results
Built this interview prep site as a Next.js 16 app on the same platform
Closing Statement
The Elastic Senior Support Engineer role asks for curiosity, technical depth, native Korean, and the ability to help enterprise customers solve complex distributed systems problems. This lab demonstrates all four: I was curious enough to build a complete cluster from scratch, deep enough to understand TLS certificate chains and Nori morphological analysis, fluent enough to create bilingual test data and Korean search queries, and systematic enough to run failure drills and document every finding.
The best support engineers don't just know the product — they've broken it and fixed it. That's exactly what this lab represents.