Open-Source Wikis

/

Elasticsearch

/

Lore

elastic/elasticsearch

Lore

The story of how Elasticsearch evolved from a single developer's commit in February 2010 to one of the most-deployed search engines in the world. Dates are derived from git history, release tags, and directory creation dates.

Eras

Genesis: a single developer (Feb 2010 – Mar 2011)

The first commit is dated 2010-02-08: first commit followed within hours by initial commit and bump to version 0.4.0. Shay Banon (the original author) had previously written Compass on top of Lucene; Elasticsearch was the rewrite as a distributed-first engine. Within the first week the codebase had a terms filter (Support terms filter, closes #1, 2010-02-09), a transport layer, and the bones of a cluster state.

Apache 2.0 / Elasticsearch BV (Mar 2012 – mid-2018)

The company Elasticsearch BV is founded in 2012 and renamed to Elastic in 2015. Through the 1.x and 2.x series the codebase grows from a few hundred Java files to thousands. Major architectural milestones in this era include:

  • Aggregations replace facets (1.0, Feb 2014).
  • Doc values become the default columnar store (2.0, Oct 2015).
  • Mapping types are deprecated in 5.x (Oct 2016) and ultimately removed in 7.0 (Apr 2019).
  • Pipeline aggregations and scripted metrics appear as part of the analytics push.
  • Painless is introduced in 5.0 as a sandboxed scripting language replacing Groovy.

X-Pack consolidation (Aug 2018 – early 2021)

Around 6.3 (June 2018) the previously-separate X-Pack plugins were folded into the main repository under x-pack/. The codebase doubled almost overnight: ML, security, watcher, monitoring, graph, SQL, Logstash bridge, transforms, and ILM all moved into x-pack/plugin/. The 7.0 release (Apr 2019) was the cleanup: typeless mappings, the removal of _default_ mappings, and a hard cut for transport BWC.

License change to SSPL/Elastic License (Jan 2021)

In January 2021 the project re-licensed from Apache 2.0 to a dual SSPL / Elastic License model. The headers that appear at the top of every file today are a record of that change. AGPL v3 was added as a third option in 2024 to accommodate downstream redistributors who cannot take SSPL.

8.x: secure-by-default and vector search (Feb 2022 – mid-2024)

Major shifts in 8.x:

  • Security on by default — first-time bring-up auto-generates the elastic password and a self-signed CA. Setup wizard prints enrollment tokens.
  • Vector search and ANNdense_vector field type with HNSW index (server/src/main/java/org/elasticsearch/index/codec/vectors).
  • Stateful → stateless seeds — the first commits for stateless appear in x-pack/plugin/stateless.
  • JDK upgrades — 8.0 jumped to JDK 17; subsequent minor versions tracked LTS releases.
  • Modular project — adoption of JPMS in libs/.

9.x: ESQL, statelessness, and serverless (mid-2024 – present)

The 9.x series is dominated by:

  • ES|QL (x-pack/plugin/esql/) — a piped query language modelled after KQL/PRQL/Splunk SPL. Now the most-changed subsystem in the repo.
  • Statelessness (x-pack/plugin/stateless, stateless-*) — the project topology behind Elastic Cloud Serverless.
  • Native accelerationlibs/simdvec (Java Vector API), libs/parquet-rs (Rust Parquet reader pulled in via JNI), libs/gpu-codec (optional GPU vector codec).
  • OpenTelemetry (modules/apm, modules/ingest-otel, x-pack/plugin/otel-data).
  • JDK 25 — the current build target.

Longest-standing features

These subsystems have existed since the early years and are still actively maintained:

  • Transport service (server/src/main/java/org/elasticsearch/transport) — the core RPC layer, present since 0.4.
  • Cluster state coordination (cluster/coordination) — the consensus algorithm has been rewritten (Zen → Zen2 → Coordinator) but the role has not changed.
  • Aggregations (search/aggregations) — the bucket/metric framework has accreted many sub-aggregations but the pipeline is intact since 1.0.
  • Painless (modules/lang-painless) — replaced Groovy in 5.0 and has been the scripting default ever since.
  • Repository plugins — the FS / S3 / GCS / Azure / HDFS / URL / SMB family, gradually expanded but consistent in shape.

Deprecated and removed features

Feature Introduced Removed / Deprecated Replaced by
Mapping types Pre-1.0 Removed 8.0 Single-type indices
Groovy scripts 1.x Removed 5.0 Painless
_default_ mappings Pre-1.0 Removed 7.x Index templates
Site plugins 1.x Removed 5.0 Kibana plugins
The tribe node 1.x Removed 7.0 Cross-cluster search
Realtime GET shard checksum 5.x Removed 8.x Document-level versioning
Transport client Pre-1.0 Removed 8.0 REST client
Zen Discovery Pre-1.0 Removed 7.x Coordinator (Zen2)

x-pack/plugin/old-lucene-versions exists specifically to read indices written by ancient versions and migrate them forward.

Major rewrites

  • Zen2 → Coordinator (Apr 2019, 7.0). The pre-7.0 Zen Discovery used a simpler quorum protocol prone to split-brain in adversarial network conditions. The Coordinator (cluster/coordination/Coordinator.java) replaced it with a Raft-inspired protocol.
  • Allocator → Desired Balance (8.x). The shard allocator was rewritten from a greedy decider chain to a desired-balance approach (cluster/routing/allocation/allocator/DesiredBalanceShardsAllocator.java).
  • Engine v2 (sequence numbers + primary terms) (6.0, Nov 2017). Introduced sequence numbers for safe replica resync and lossless rolling restarts.
  • Mapping refactor (typeless) (7.0, Apr 2019). Single-type indices and the removal of the _type field.
  • ES|QL (8.11+). Built from scratch under x-pack/plugin/esql/ and now the front door for many analytics use cases.
  • Stateless (8.x → 9.x). New shard recovery, indexing, and search paths that read/write directly to object storage.

Growth trajectory

  • 2010: ~1 contributor, hundreds of files.
  • 2014 (1.0): ~50 contributors, thousands of files.
  • 2018 (X-Pack merge): codebase roughly doubles in file count overnight.
  • 2026: 341 unique authors in the last year, 99k commits, 28k Java files. The most-changed subsystems are ES|QL and stateless — the codebase's center of gravity has shifted from "search-engine" to "query-language and serverless platform".

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – Elasticsearch wiki | Factory