Elasticsearch
maang.io System Design Series
Elasticsearch takes Lucene and distributes it: an index splits into shards (each a Lucene index) with replicas, spread across nodes. It adds near-real-time indexing (buffer → refresh → segment, with a translog for durability), scatter-gather query then fetch, and a rich query DSL and aggregations. It's the default answer for full-text search and log analytics at scale.
This deep dive comes in four parts:
- Foundations & Core Concepts — indices, shards/replicas, and document routing.
- Internals — the near-real-time model, translog, refresh/flush, and segment merges, with worked numbers.
- Advanced Internals — node roles, the query/fetch phases, mappings, and doc values for aggregations.
- Interview — Staff/Principal Q&A: sizing shards, and when not to use it as a primary store.