elastic/elasticsearch
Free and Open Source, Distributed, RESTful Search Engine
How elasticsearch is put together
This repository snapshot centers on the Elasticsearch monorepo's build and CI infrastructure: a large Gradle multi-project build (root build.gradle plus build-conventions, build-tools, and build-tools-internal sub-builds) that compiles the Elasticsearch server and libraries, packages distributions, and publishes Maven artifacts via nmcp aggregation. CI runs on Buildkite with pipelines defined as YAML under .buildkite/pipelines; pull-request pipelines and BWC version matrices are dynamically generated by Node/TypeScript scripts (run with bun) and by the Gradle task updateCIBwcVersions, which expands template files into concrete pipeline YAML. The product itself is a JVM-based distributed search engine built on Apache Lucene, organized as JPMS modules (e.g., org.elasticsearch.server) with a small native Rust component (libs/parquet-rs) exposed over FFI.
Languages
Frameworks
Infrastructure
Major components
Root build orchestration (build.gradle)
Applies all elasticsearch.* Gradle plugins, aggregates Maven publications into an nmcp zip, and generates/verifies BWC version files and Buildkite pipeline matrices.
build-conventions
Shared convention Gradle plugins for license headers, publishing, licensing, version properties, and Spotless-based formatting.
build-tools
Public-facing Gradle plugins for distribution download, esplugin/stable-esplugin builds, test clusters, reaper process management, and REST test types.
build-tools-internal
Internal Gradle plugin suite covering distribution setup/BWC, Docker support, DRA artifacts, JDK toolchains, REST/YAML compat tests, ESQL spec tests, and precommit validation.
.buildkite CI system
Buildkite pipeline definitions (static templates plus generated files), agent hooks for env/secrets, and TypeScript tooling that generates pull-request pipelines.
server module (org.elasticsearch.server)
Core Elasticsearch engine exposing cluster, action, bootstrap, and coordination APIs as a JPMS module over Lucene.
libs/* shared libraries
Standalone JPMS libraries (cli, columnar, x-content, entitlement, simdvec, geo, parquet-rs, ssl-config, etc.) consumed by server and plugins.
distribution & packaging
Gradle builds for archives, Docker images, OS packages, and backward-compatibility distributions.
ES|QL gained spatial grid support, double-range grouping, and smarter pushdown of filters to the search engine, while many flaky tests were muted and stabilized.
2 weeksWeek of 2026-08-24
Week of 2026-08-24latest
ES|QL gained spatial grid support, double-range grouping, and smarter pushdown of filters to the search engine, while many flaky tests were muted and stabilized.
Week of 2026-08-17
This high-volume week introduced a DENSE_VECTOR command in ES|QL, major Parquet performance improvements, and enabled translog batch writes in stateless storage.
The last two weeks of Elasticsearch development were dominated by the ES|QL query language, with a steady stream of new capabilities (spatial grids, dense vectors, range grouping), performance work around Parquet file reading, and stricter handling of null and missing data. Alongside that, teams shipped infrastructure improvements like enabling point-in-time relocation by default, translog batch writes for serverless storage, and a large amount of test stabilization—muting flaky tests and migrating legacy test suites. The overall arc shows heavy investment in making ES|QL faster and more robust while quietly modernizing core internals.
Week by week
2026-08-24ES|QL gained spatial grid support, double-range grouping, and smarter pushdown of filters to the search engine, while many flaky tests were muted and stabilized.latest6 changes
Feature
Spatial grid functions now handle geo_shape
ES|QL's spatial grid functions can now work with geo_shape data, expanding geographic analysis capabilities.
Feature
Double range grouping in ES|QL
Aggregations can now group numeric results into double-precision ranges directly in ES|QL queries.
Refactor
Faster filtering of negated ranges
IN_RANGE checks on IP addresses, versions, and keywords can now be pushed down to Lucene even when negated, speeding up those queries.
Fix
Null-safety fixes across ES|QL evaluators
A series of changes made ES|QL stricter and more correct about null values in data blocks and new evaluator code.
Chore
Point-in-time relocation enabled by default
The feature flag guarding PIT relocation was removed, turning the capability on for everyone.
Chore
Flaky tests muted and fixed
Several intermittently failing tests were muted or repaired, including corruption, upgrade, and phrase-query tests.
2026-08-17This high-volume week introduced a DENSE_VECTOR command in ES|QL, major Parquet performance improvements, and enabled translog batch writes in stateless storage.6 changes
Feature
New DENSE_VECTOR command in ES|QL
ES|QL can now create and work with dense vector fields, supporting AI and similarity-search use cases.
Refactor
Parquet reading optimizations
Parquet input/output was moved onto the heap with reused decompression buffers, making file-based queries faster and more memory-efficient.
Feature
Translog batch writes enabled in stateless
Serverless storage can now write transaction log entries in batches, improving indexing throughput.
Feature
Subqueries usable inside EVAL
The 'in subquery' expression is now allowed within EVAL statements, giving query writers more flexibility.
Fix
Field extraction in MATCH_PHRASE
MATCH_PHRASE and the colon operator now support field extraction, fixing how text fields are matched in full-text searches.
Chore
Transform service modernization
Transforms got client caching, updated index options handling, and token propagation changes to improve reliability and security.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required