概要
前回は1.x系のプラグインの作成方法を書きました。
今回は2.x系の作り方を勉強します。
完成形は以下
環境
- Ubuntu 14.04
- Elasticsearch 2.2.0
1.xとの違い
- 1.xはmaven、2.xはgradleでやるのが主流
- 2.xから
AbstractPlugin
=>Plugin
に変更 plugin-descriptor.properties
が必要- 3.x系では公式のbuild.gradleの書き方であれば↑の
plugin-descriptor.properties
を自動生成してくれる?
プロジェクト作成
Example of Native Script Plugin for Elasticsearch
を参考にするといいです。ただ使うElasticsearchのソースが3.0.0-SNAPSHOTのせいか、rest系モジュールが使えなかったので今回はやや古い作り方の
を参考にしています。
フォルダ構成
. ├── build.gradle └── src └── main ├── java │ └── com │ └── github │ └── jun06t │ ├── rest │ │ └── sampleRestAction.java │ └── samplePlugin.java └── resources └── plugin-metadata └── plugin-descriptor.properties
build.gradle
apply plugin: 'java' version = '1.0' repositories { mavenCentral() } dependencies { compile 'org.elasticsearch:elasticsearch:2.2.0' } task buildPluginZip(type: Zip, dependsOn:[':jar']) { baseName = 'elasticsearch-sample' classifier = 'plugin' from files(libsDir) from 'src/main/resources/plugin-metadata' } // define artifacts artifacts { archives buildPluginZip }
dependencies
でmavenからelasticsearchのコードを取得します。
また
from 'src/main/resources/plugin-metadata'
でplugin-descriptor.properties
をzipに含めます。
ソースコード
sampleRestAction.java
、samplePlugin.java
は前回と同じです。
plugin-descriptor.properties
Help for plugin authorsに則って各フィールドを埋めます。
description=sample plugin for Elasticsearch version=1.0.0 site=false name=sample jvm=true classname=com.github.jun06t.samplePlugin java.version=1.8 elasticsearch.version=2.2.0
注意としてelasticsearch.version
と使用しているElasticsearchのバージョンが異なるとインストールできません。
インストール
パッケージ作成
$ gradle build buildPluginZip
インストールします。
$ sudo ./bin/plugin install file:///vagrant/elasticsearch-sample-1.0-plugin.zip -> Installing from file:/vagrant/elasticsearch-sample-1.0-plugin.zip... Trying file:/vagrant/elasticsearch-sample-1.0-plugin.zip ... Downloading .DONE Verifying file:/vagrant/elasticsearch-sample-1.0-plugin.zip checksums if available ... NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify) Installed sample into /usr/share/elasticsearch/plugins/sample
再起動
$ sudo service elasticsearch restart
動作確認
$ curl -s http://localhost:9200/test_index/_hello | jq . { "index": "test_index", "type": null, "description": "This is a elasticsearch-sample response: Tue Feb 16 02:43:29 UTC 2016" }