Open-Source Wikis

/

Elasticsearch

/

X-Pack

elastic/elasticsearch

X-Pack

X-Pack is the umbrella for the project's commercial features. Code lives under x-pack/plugin/. All X-Pack code is licensed under the Elastic License 2.0 only (no SSPL / AGPL options). It ships with the default distribution but most features require an active license to enable.

X-Pack is enormous — about 9,760 production Java files. This page is the index. Use the dedicated feature pages for the high-traffic ones.

Catalog (selected)

Plugin Purpose Page
analytics Commercial aggregations: top_metrics, t_test, weighted_avg, geoline, ... (see Aggregations)
apm-data APM ingest pipelines and templates
async-search Submit / poll / get long-running searches
autoscaling Cluster auto-scaling decision engine
blob-cache Disk cache for searchable snapshots / stateless (see Stateless)
ccr Cross-cluster replication (see CCS / CCR)
core Shared X-Pack types (license, persistent tasks, ...)
deprecation Deprecation log + API
diskbbq Disk-backed BBQ vector codec (see Vector search)
dlm-frozen-transition Stateless DLM transitions (see ILM/SLM)
downsample Time-series downsampling
enrich Enrich processor + lookup index
ent-search Search applications, query rules, behavioral analytics
eql Event Query Language
esql Elasticsearch Query Language ESQL
esql-core Shared types between SQL and ESQL
esql-datasource-* Pluggable ESQL data sources (Parquet, S3, Iceberg, CSV, ...)
fleet Fleet management API
frozen-indices Frozen-tier optimizations
geoip-enterprise-downloader MaxMind enterprise feed
graph Graph API (relationships from search hits)
identity-provider Built-in OIDC IdP (see Security)
ilm Index Lifecycle Management ILM/SLM
inference LLM provider integration Inference
kql Kibana Query Language parser
logsdb Logs-DB index mode
logstash Logstash pipeline metadata
mapper-aggregate-metric aggregate_metric_double field type
mapper-constant-keyword constant_keyword field type
mapper-counted-keyword counted_keyword field type
mapper-unsigned-long unsigned_long field type
mapper-version version field type for semver
migrate Index migration helpers
ml Machine learning ML
ml-package-loader Trained-model bootstrap (ELSER, e5, ...) (see ML)
monitoring Stack Monitoring (legacy)
old-lucene-versions Read indices from very old Lucene majors
otel-data OpenTelemetry data integration
profiling Continuous profiling backend
prometheus Prometheus metrics exposition
ql Shared query-language utilities (used by SQL + EQL + ESQL)
rank-rrf Reciprocal Rank Fusion retriever (see Search)
rank-vectors Vector rerank retriever
redact Ingest processor for PII redaction
repositories-metering-api Per-repository usage metering
rollup Time-series rollup jobs (legacy)
search-business-rules Query rules for business overrides
searchable-snapshots Read indices directly from snapshot blobs Stateless
secure-settings Operator-only secure settings
security AuthN/AuthZ, audit, FIPS, TLS Security
shutdown Coordinated node shutdown
slm Snapshot Lifecycle Management ILM/SLM
snapshot-based-recoveries Recover replicas from snapshots (see Stateless)
snapshot-repo-test-kit Repository self-test API
spatial Spatial aggregations and field types
sql SQL query frontend
stack Stack management metadata
stateless, stateless-* Stateless topology Stateless
text-structure Text structure inference (_text_structure/find_structure)
transform Continuous data-pivot jobs
vector-tile Mapbox vector tile API
voting-only-node Voting-only master role
watcher Scheduled queries + alerting
wildcard wildcard field type for high-cardinality keyword search
write-load-forecaster Adaptive write load forecasting

How X-Pack plugins differ from server modules

  • License: Elastic License 2.0 only, not the tri-license.
  • Common base: x-pack/plugin/core/ provides shared types (XPackPlugin, XPackLicenseState, persistent task framework, telemetry of usage features).
  • License gating: most features check XPackLicenseState at runtime and degrade or refuse when the license tier is insufficient.
  • Catalog awareness: ES|QL and security plugins inspect EnabledFeatures on every action.

Project structure

Each X-Pack plugin is its own Gradle subproject under x-pack/plugin/<name>/. They share most of the structure of a normal plugin (Plugin subclass, descriptor, build.gradle) but:

  • Headers are the X-Pack-only license.
  • Tests usually run as internalClusterTest, javaRestTest, yamlRestTest, plus the x-pack-specific qa/ projects under x-pack/plugin/<name>/qa/.
  • Many plugins depend on x-pack-core for shared types.

Where to add a new X-Pack feature

Create x-pack/plugin/<name>/, register it in x-pack/plugin/build.gradle (it is auto-included via subproject scan), depend on x-pack-core, and follow the same plugin patterns. License-check via XPackLicenseState.

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

X-Pack – Elasticsearch wiki | Factory