Open-Source Wikis

/

Elasticsearch

/

Plugins (optional)

elastic/elasticsearch

Plugins (optional)

Plugins under plugins/ are built by the project but not packaged in the default distribution. They are installed on demand:

bin/elasticsearch-plugin install analysis-icu
bin/elasticsearch-plugin install repository-hdfs

Catalog

Plugin Purpose
analysis-icu ICU-backed analyzers, normalizers, transforms (preferred for non-English text)
analysis-kuromoji Japanese morphological analyzer
analysis-nori Korean morphological analyzer
analysis-phonetic Phonetic token filters (Soundex, Metaphone, etc.)
analysis-smartcn Chinese segmentation
analysis-stempel Polish stemmer
analysis-ukrainian Ukrainian morphological analyzer
discovery-azure-classic Discovery via Azure Classic API
discovery-ec2 EC2 host discovery
discovery-gce GCE host discovery
mapper-annotated-text annotated_text field type for inline-tagged search
mapper-murmur3 murmur3 hash field type for cardinality estimation
mapper-size _size metadata field
repository-hdfs HDFS snapshot repository
store-smb SMB-friendly file store (Windows shares)
examples/ Example plugin projects (a great starting point for contributors)

Reading the source

Each subdirectory under plugins/ is a self-contained Gradle subproject. The pattern is identical:

plugins/<name>/
├── build.gradle                Plugin-specific build config
├── licenses/                   Bundled third-party licenses
├── src/main/java/...           Plugin code
├── src/main/plugin-metadata/   plugin-descriptor.properties + security policy
├── src/test/java/...           Unit tests
└── src/internalClusterTest/    Integration tests (where applicable)

A plugin class extends Plugin and implements one or more capability interfaces. The smallest example is mapper-size, which adds a single metadata field. The examples/ directory contains demo plugins for analysis, custom suggesters, custom rest actions, and more — they double as documentation for the public plugin API.

Examples directory

plugins/examples/ is a tutorial set:

  • custom-rest-action — minimal REST + transport action plugin.
  • custom-significance-heuristic — significance heuristic for terms aggregation.
  • custom-settings — adding cluster and index settings from a plugin.
  • custom-suggester — custom suggester implementation.
  • painless-whitelist — registering a Painless context whitelist.
  • rest-handler / script-expert-scoring — small-scope plugin examples.

If you are writing a plugin from scratch, copy the closest example and start from there.

Discovery plugins

discovery-ec2, discovery-gce, and discovery-azure-classic integrate the Coordinator's seed-finder with cloud APIs so that ad-hoc cluster bring-up does not require a hard-coded seed list. They are increasingly less needed because most cloud deployments now use file-based seed providers behind a load balancer.

Analysis plugins

The analysis-* family wraps Lucene's analysis-* modules with the same name. They cover languages where Lucene does not produce a perfect default tokenization (kuromoji, nori, smartcn, stempel) and additional general-purpose token filters (icu, phonetic).

Repository plugins

repository-hdfs lives here (rather than in modules/) because the HDFS dependency tree is heavy and not everyone needs it.

Where to extend

  • New plugin: copy plugins/examples/custom-rest-action and adapt.
  • Plugin descriptor: src/main/plugin-metadata/plugin-descriptor.properties plus the security policy if your code touches restricted JDK APIs.
  • Distribution packaging: the plugin's build.gradle declares it via apply plugin: 'elasticsearch.esplugin'.

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

Plugins (optional) – Elasticsearch wiki | Factory