Carpe Diem

備忘録

Elasticsearch plugin 作成方法 [2.x]

概要

前回は1.x系のプラグインの作成方法を書きました。
今回は2.x系の作り方を勉強します。

完成形は以下

github.com

環境

  • 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を自動生成してくれる?

プロジェクト作成

java nativeのプラグインを作成する場合は

Example of Native Script Plugin for Elasticsearch

を参考にするといいです。ただ使うElasticsearchのソースが3.0.0-SNAPSHOTのせいか、rest系モジュールが使えなかったので今回はやや古い作り方の

elasticsearch-webapp-example

を参考にしています。


フォルダ構成

.
├── 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
}

dependenciesmavenからelasticsearchのコードを取得します。
また

    from 'src/main/resources/plugin-metadata'

plugin-descriptor.propertiesをzipに含めます。


ソースコード

sampleRestAction.javasamplePlugin.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"
}

ソース