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-hdfsCatalog
| 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-actionand adapt. - Plugin descriptor:
src/main/plugin-metadata/plugin-descriptor.propertiesplus the security policy if your code touches restricted JDK APIs. - Distribution packaging: the plugin's
build.gradledeclares it viaapply plugin: 'elasticsearch.esplugin'.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.