概要
前回は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"
}