Plugin changes
editPlugin changes
editThe command bin/plugin
has been renamed to bin/elasticsearch-plugin
. The
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.
Plugins isolation
editisolated
option has been removed. Each plugin will have its own classloader.
Site plugins removed
editSite plugins have been removed. Site plugins should be reimplemented as Kibana plugins.
Multicast plugin removed
editMulticast has been removed. Use unicast discovery, or one of the cloud discovery plugins.
Plugins with custom query implementations
editPlugins 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 XContent
format
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 getQueries
method.
The query object can then transform itself into a lucene query through the new toQuery(QueryShardContext)
method,
which returns a lucene query to be executed on the data node.
Similarly, plugins implementing custom score functions need to implement the fromXContent(QueryParseContext)
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 changes
editCloud AWS plugin has been split in two plugins:
Proxy settings for both plugins have been renamed:
-
from
cloud.aws.proxy_host
tocloud.aws.proxy.host
-
from
cloud.aws.ec2.proxy_host
tocloud.aws.ec2.proxy.host
-
from
cloud.aws.s3.proxy_host
tocloud.aws.s3.proxy.host
-
from
cloud.aws.proxy_port
tocloud.aws.proxy.port
-
from
cloud.aws.ec2.proxy_port
tocloud.aws.ec2.proxy.port
-
from
cloud.aws.s3.proxy_port
tocloud.aws.s3.proxy.port
Cloud Azure plugin changes
editCloud Azure plugin has been split in three plugins:
If you were using the cloud-azure
plugin for snapshot and restore, you had in elasticsearch.yml
:
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
Cloud GCE plugin changes
editCloud GCE plugin has been renamed to Discovery GCE plugin.
Delete-By-Query plugin removed
editThe 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 plugin deprecated
editMapper attachments has been deprecated. Users should use now the ingest-attachment
plugin.
Passing of Java System Properties
editPreviously, 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
via ES_JAVA_OPTS.
Custom plugins path
editThe ability to specify a custom plugins path via path.plugins
has
been removed.
ScriptPlugin
editPlugins that register custom scripts should implement ScriptPlugin
and remove
their onModule(ScriptModule)
implementation.
AnalysisPlugin
editPlugins that register custom analysis components should implement
AnalysisPlugin
and remove their onModule(AnalysisModule)
implementation.
MapperPlugin
editPlugins that register custom mappers should implement
MapperPlugin
and remove their onModule(IndicesModule)
implementation.
ActionPlugin
editPlugins that register custom actions should implement ActionPlugin
and
remove their onModule(ActionModule)
implementation.
Plugins that register custom RestHandler`s should implement `ActionPlugin
and
remove their onModule(NetworkModule)
implemnetation.
SearchPlugin
editPlugins that register custom search time behavior (Query
, Suggester
,
ScoreFunction
, FetchSubPhase
, Highlighter
, etc) should implement
SearchPlugin
and remove their onModule(SearchModule)
implementation.
SearchParseElement
editThe 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 SearchExtParser
implementation that can parse`XContent` into a SearchExtBuilder
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.
Testing Custom Plugins
editESIntegTestCase#pluginList
has been removed. Use Arrays.asList
instead. It
isn’t needed now that all plugins require Java 1.8.
Mapper-Size plugin
editThe 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.