Search code examples
elasticsearchelasticsearch-pluginelasticsearch-2.0

Elasticsearch 2.0 plugin installation INFO


I started to use Elasticsearch 2.0. I have a plugin for Elasticsearch but cannot install it on new version 2.0. It gives an error:

/Downloads/elasticsearch-2.0.0/bin$ ./plugin install file:///home/fatih/Downloads/myftptest/zemberekplugin.zip
-> Installing from file:/home/fatih/Downloads/myftptest/zemberekplugin.zip... 
Trying file:/home/fatih/Downloads/myftptest/zemberekplugin.zip ... 
Downloading .......DONE 
Verifying file:/home/fatih/Downloads/myftptest/zemberekplugin.zip checksums if available ... 
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify) 
ERROR: Could not find plugin descriptor 'plugin-descriptor.properties' in plugin zip 

How can I fix it?


Solution

  • The way plugins are installed has changed. The correct command as above is now:

    sudo bin/plugin install file:/path/to/plugin.zip
    

    https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/installation.html

    However plugins now require a 'plugin-descriptor.properties' file to be included in the plugin zip alongside the .jar files

    https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/plugin-authors.html

    https://github.com/elastic/elasticsearch/blob/master/dev-tools/src/main/resources/plugin-metadata/plugin-descriptor.properties

    # Elasticsearch plugin descriptor file
    # This file must exist as 'plugin-descriptor.properties' at
    # the root directory of all plugins.
    #
    # A plugin can be 'site', 'jvm', or both.
    #
    ### example site plugin for "foo":
    #
    # foo.zip <-- zip file for the plugin, with this structure:
    #   _site/ <-- the contents that will be served
    #   plugin-descriptor.properties <-- example contents below:
    #
    # site=true
    # description=My cool plugin
    # version=1.0
    #
    ### example jvm plugin for "foo"
    #
    # foo.zip <-- zip file for the plugin, with this structure:
    #   <arbitrary name1>.jar <-- classes, resources, dependencies
    #   <arbitrary nameN>.jar <-- any number of jars
    #   plugin-descriptor.properties <-- example contents below:
    #
    # jvm=true
    # classname=foo.bar.BazPlugin
    # description=My cool plugin
    # version=2.0.0-rc1
    # elasticsearch.version=2.0
    # java.version=1.7
    #
    ### mandatory elements for all plugins:
    #
    # 'description': simple summary of the plugin
    description=${project.description}
    #
    # 'version': plugin's version
    version=${project.version}
    #
    # 'name': the plugin name
    name=${elasticsearch.plugin.name}
    
    ### mandatory elements for site plugins:
    #
    # 'site': set to true to indicate contents of the _site/
    #  directory in the root of the plugin should be served.
    site=${elasticsearch.plugin.site}
    #
    ### mandatory elements for jvm plugins :
    #
    # 'jvm': true if the 'classname' class should be loaded
    #  from jar files in the root directory of the plugin.
    #  Note that only jar files in the root directory are
    #  added to the classpath for the plugin! If you need
    #  other resources, package them into a resources jar.
    jvm=${elasticsearch.plugin.jvm}
    #
    # 'classname': the name of the class to load, fully-qualified.
    classname=${elasticsearch.plugin.classname}
    #
    # 'java.version' version of java the code is built against
    # use the system property java.specification.version
    # version string must be a sequence of nonnegative decimal integers
    # separated by "."'s and may have leading zeros
    java.version=${maven.compiler.target}
    #
    # 'elasticsearch.version' version of elasticsearch compiled against
    # You will have to release a new version of the plugin for each new
    # elasticsearch release. This version is checked when the plugin
    # is loaded so Elasticsearch will refuse to start in the presence of
    # plugins with the incorrect elasticsearch.version.
    elasticsearch.version=${elasticsearch.version}
    #
    ### deprecated elements for jvm plugins :
    #
    # 'isolated': true if the plugin should have its own classloader.
    # passing false is deprecated, and only intended to support plugins 
    # that have hard dependencies against each other. If this is
    # not specified, then the plugin is isolated by default.
    isolated=${elasticsearch.plugin.isolated}
    #