Loading

Plugins and bundles in Elasticsearch

Use plugins and bundles to extend Elasticsearch's core functionality with additional analyzers, discovery providers, ingest processors, field types, scripting languages, dictionaries, and related configuration files.

Plugins are packages installed in Elasticsearch. Use them to add capabilities such as language and phonetic analysis, ingest processors for attachments or geo-IP data, additional field types, cloud discovery providers, or scripting languages. Official core plugins are maintained with Elasticsearch and share its version number. Community and custom plugins are maintained separately and can cover the same kinds of extensions when a core plugin is not available or you need something purpose-built.

Bundles are ZIP archives of configuration or data files, such as synonym dictionaries, scripts, or SAML metadata. In Elastic Cloud Hosted and Elastic Cloud Enterprise, bundles are managed as extensions together with custom plugins. At node startup, Elastic Cloud extracts bundle contents into the node's configuration directory instead of installing them as plugins. On other deployment types, the same kinds of files are still supported, but you provide them differently: you place them on each node's configuration path for self-managed clusters, or mount them with ConfigMaps or Secrets on Elastic Cloud on Kubernetes.

After you choose or create a plugin, you can install it by following the steps described on this page that match your deployment type.

Elastic Cloud Serverless

Elastic Cloud Serverless projects do not support installing plugins or uploading custom plugins and bundles. Serverless includes core analysis plugins by default. To manage synonyms, use the synonyms API or refer to Search with synonyms. For differences between Elastic Cloud Hosted and Serverless for plugins, bundles, and custom dictionaries, see Compare Elastic Cloud Hosted and Serverless.

How you install and manage plugins, and whether you use bundles or another way to supply equivalent configuration files, depends on your Elasticsearch deployment type:

  • Hosted Cloud deployments such as Elastic Cloud Hosted and Elastic Cloud Enterprise expose plugin and extension management in the Cloud console and API.
  • Self-managed deployments use a configuration file with the official Docker image, or the elasticsearch-plugin CLI for package and archive installs. You add dictionaries and other config files directly on each node's configuration path.
  • On Elastic Cloud on Kubernetes deployments, you install plugins by building a custom container image or using init containers, and you add configuration files with ConfigMaps or Secrets.

Elastic Cloud Hosted simplifies plugin management by offering compatible plugins for your Elasticsearch version. These plugins are automatically upgraded with your deployment, except when there are breaking changes.

To add plugins to a hosted deployment, refer to:

Kibana plugins are not supported on Elastic Cloud Hosted. Refer to Restrictions and known problems.

Elastic Cloud Enterprise provides built-in plugins that work with your version of Elasticsearch and are upgraded along with your deployment, unless there are breaking changes.

To add plugins to an Elastic Cloud Enterprise deployment, refer to:

Unlike Elastic Cloud Hosted, in certain cases, Elastic Cloud Enterprise allows additional Kibana plugins by building them into a custom Kibana Docker image. Refer to Include additional Kibana plugins, for more information.

How you manage plugins depends on how you run Elasticsearch:

On Elastic Cloud on Kubernetes, Elasticsearch runs in Kubernetes pods. Plugins must be present on disk before the main Elasticsearch container starts. Use one of these approaches:

  • Using a custom container image. You build a custom image from the official Elastic image with the required plugins pre-installed. This option is reproducible, works without internet access at runtime, and starts quickly, but requires a container registry and a new image for each Elasticsearch version upgrade.
  • Using init containers. You use an init container to run elasticsearch-plugin install before the main Elasticsearch container starts. This option is easier to get started with, but requires pod internet access and repeats the download on each new node.
Note

You can inject configuration files, such as synonym dictionaries, SAML metadata, or TLS certificates by mounting them with ConfigMaps or Secrets. However, mounting plugin files into a pod does not run elasticsearch-plugin install, so Elasticsearch will not load them at startup. Instead, to install plugins, use a custom container image or init container.