🔎 Elasticsearch
Search is not filtering — text against keyword, analyzers and why what you stored is not what you sent, query against filter context, BM25, and the aggregation whose top ten may quietly be wrong. Plus the rule that saves clusters: this is not your source of truth.
No lessons published yet — this is the roadmap, so you can see exactly what the course will cover before it lands.
Before you start: NoSQL Concepts — Series 1, and Series 2. The inverted index and the difference between a filter and a ranking are introduced there for every engine. This track assumes the reader already knows why relevance is a different kind of answer, and spends its time on how to get a good one.
Short on time? The 15 episodes marked core are the shortest path to being productive at work. Start there and pick up the rest whenever a job asks for them.
Series 1 · Indexing and Searching
mappings, analyzers, and a query that ranks
- 01
The Inverted Index and the Refresh — Why the Document You Just Wrote Is Not There
coreintermediatecoming soon - 02
text Against keyword — the Field Type That Decides Whether Anything Works
coreintermediatecoming soon - 03
Analyzers — What Is Stored Is Not What You Sent, and _analyze Proves It
coreintermediatecoming soon - 04
Query Against Filter Context — Only the User's Words Need a Score
coreintermediatecoming soon - 05
Relevance and BM25 — Three Ideas, and Why There Is No Unit Test for Good
coreintermediatecoming soon - 06
Project — Make a Bad Search Good, With the Query Set as Evidence
coreintermediate#projectcoming soon
Series 2 · Aggregations and Getting Data In
analytics on an index, and what bulk indexing costs
- 01
Aggregations — GROUP BY as Nested JSON, Over an Index
coreadvancedcoming soon - 02
Your Top Ten May Be Wrong — Shard-Level Approximation, and the Field That Says So
coreadvancedcoming soon - 03
nested and join — the Match Across Two Sub-Documents You Did Not Mean
advancedcoming soon - 04
Indices per Day, Templates and ILM — Deleting Old Data Should Be Instant
coreadvancedcoming soon - 05
The Bulk API — 200 OK With Failed Items Inside, and the Loader That Ignores Them
coreadvancedcoming soon - 06
Project — Load a Dataset, Prove the Count, and Aggregate It
coreadvanced#projectcoming soon
Series 3 · Sizing and Reality
shards, the source of truth, and the fork
- 01
Shards and Replicas — a Number You Choose Once and Live With
coreadvancedcoming soon - 02
Too Many Shards — the Instability That Looks Like Nothing Is Wrong
coreadvancedcoming soon - 03
Not Your Source of Truth — Could You Rebuild This Cluster Tomorrow?
coreadvancedcoming soon - 04
Elasticsearch and OpenSearch — the Split, and Which One You Are Actually Running
advancedcoming soon - 05
Project — Size an Index From Its Retention and Defend the Number
coreadvanced#projectcoming soon
Not here, on purpose
- Why a search engine at all, and how it differs from the other shapes — covered in NoSQL Concepts, Series 2 · 15, which this course assumes
- Full-text search inside a relational database — covered in PostgreSQL, Series 2 · 10, which indexes text with GIN. Frequently the right answer for a single application, and NoSQL Concepts, Series 4 · 00 argues that case
- Getting the data in from the source system — covered in ETL & Data Pipelines, and Series 3 · 15 there owns CDC. In this course, Series 2 · 20 covers only the bulk API and what the index does while you write to it
- Kibana, dashboards and visualisation — covered in BI & Data Visualization for the discipline of building a dashboard at all
- Running the cluster — provisioning, upgrades, backups, capacity — covered in Data Ops for the discipline. In this course, Series 3 covers only the sizing decisions a person indexing data has to make themselves