Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 374
Fatih Aktepe Avatar asked Nov 05 '15 07:11

Fatih Aktepe


2 Answers

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}
#
like image 126
lanky393 Avatar answered Oct 28 '22 07:10

lanky393


I am only completing @Ianky393 answer with an image, so it can be much easier to be understood.

For the plugin zip you need, it is usually in the src folder inside the downloaded folder. If at first there is site folder instead of _site, rename it to _site first. Make sure inside of the zip looks like this.

enter image description here

like image 3
Aminah Nuraini Avatar answered Oct 28 '22 08:10

Aminah Nuraini