bin/plugin has been renamed to
structure of the plugin ZIP archive has changed. All the plugin files must be
contained in a top-level directory called
elasticsearch. If you use the
gradle build, this structure is automatically generated.
isolated option has been removed. Each plugin will have its own classloader.
Site plugins have been removed. Site plugins should be reimplemented as Kibana plugins.
Multicast has been removed. Use unicast discovery, or one of the cloud discovery plugins.
Plugins implementing custom queries need to implement the
fromXContent(QueryParseContext) method in their
QueryParser subclass rather than
parse. This method will take care of parsing the query from
into an intermediate query representation that can be streamed between the nodes in binary format, effectively the
query object used in the java api. Also, the query builder needs to be registered as a
NamedWriteable. This is
all done by implementing the
SearchPlugin interface and overriding the
The query object can then transform itself into a lucene query through the new
which returns a lucene query to be executed on the data node.
Similarly, plugins implementing custom score functions need to implement the
method in their
ScoreFunctionParser subclass rather than
parse. This method will take care of parsing
the function from
XContent format into an intermediate function representation that can be streamed between
the nodes in binary format, effectively the function object used in the java api. The function object can then
transform itself into a lucene function through the new
toFunction(QueryShardContext) method, which returns
a lucene function to be executed on the data node.
Cloud AWS plugin has been split in two plugins:
Proxy settings for both plugins have been renamed:
Cloud Azure plugin has been split in three plugins:
If you were using the
cloud-azure plugin for snapshot and restore, you had in
cloud: azure: storage: account: your_azure_storage_account key: your_azure_storage_key
You need to give a unique id to the storage details now as you can define multiple storage accounts:
cloud: azure: storage: my_account: account: your_azure_storage_account key: your_azure_storage_key
The Delete-By-Query plugin has been removed in favor of a new Delete By Query API implementation in core. It now supports throttling, retries and cancellation but no longer supports timeouts. Instead use the cancel API to cancel deletes that run too long.
Mapper attachments has been deprecated. Users should use now the
Previously, Java system properties could be passed to the plugin
command by passing
-D style arguments directly to the plugin script.
This is no longer permitted and such system properties must be passed
The ability to specify a custom plugins path via
Plugins that register custom scripts should implement
ScriptPlugin and remove
Plugins that register custom analysis components should implement
AnalysisPlugin and remove their
Plugins that register custom mappers should implement
MapperPlugin and remove their
Plugins that register custom actions should implement
Plugins that register custom
RestHandler`s should implement `ActionPlugin and
Plugins that register custom search time behavior (
Highlighter, etc) should implement
SearchPlugin and remove their
SearchParseElement interface has been removed. Custom search request
sections can only be provided under the
ext element. Plugins can
plug in custom parsers for those additional sections by providing a
SearchPlugin.SearchExtSpec, which consists of a
implementation that can parse`XContent` into a
implementation. The parsing happens now in the coordinating node. The
result of parsing is serialized to the data nodes through transport layer
together with the rest of the search request and stored in the search
context for later retrieval.
ESIntegTestCase#pluginList has been removed. Use
Arrays.asList instead. It
isn’t needed now that all plugins require Java 1.8.
The metadata field
_size is not accessible in aggregations, scripts and when
sorting for indices created in 2.x.
If these features are needed in your application it is required to reindex the data with Elasticsearch 5.x.