← All courses

🔎 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

  1. 01

    The Inverted Index and the Refresh — Why the Document You Just Wrote Is Not There

    coreintermediatecoming soon
  2. 02

    text Against keyword — the Field Type That Decides Whether Anything Works

    coreintermediatecoming soon
  3. 03

    Analyzers — What Is Stored Is Not What You Sent, and _analyze Proves It

    coreintermediatecoming soon
  4. 04

    Query Against Filter Context — Only the User's Words Need a Score

    coreintermediatecoming soon
  5. 05

    Relevance and BM25 — Three Ideas, and Why There Is No Unit Test for Good

    coreintermediatecoming soon
  6. 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

  1. 01

    Aggregations — GROUP BY as Nested JSON, Over an Index

    coreadvancedcoming soon
  2. 02

    Your Top Ten May Be Wrong — Shard-Level Approximation, and the Field That Says So

    coreadvancedcoming soon
  3. 03

    nested and join — the Match Across Two Sub-Documents You Did Not Mean

    advancedcoming soon
  4. 04

    Indices per Day, Templates and ILM — Deleting Old Data Should Be Instant

    coreadvancedcoming soon
  5. 05

    The Bulk API — 200 OK With Failed Items Inside, and the Loader That Ignores Them

    coreadvancedcoming soon
  6. 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

  1. 01

    Shards and Replicas — a Number You Choose Once and Live With

    coreadvancedcoming soon
  2. 02

    Too Many Shards — the Instability That Looks Like Nothing Is Wrong

    coreadvancedcoming soon
  3. 03

    Not Your Source of Truth — Could You Rebuild This Cluster Tomorrow?

    coreadvancedcoming soon
  4. 04

    Elasticsearch and OpenSearch — the Split, and Which One You Are Actually Running

    advancedcoming soon
  5. 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