概要
Elasticsearchのプラグインの作成方法です。
1.xと2.xで色々と変更があるので、まずは1.xの作り方を学んでみます。
完成形は以下
環境
- Ubuntu 14.04
- Elasticsearch 1.4.5
プロジェクト作成
mavenからスケルトンコードを生成することができるので以下のコマンドで自動生成します。
$ mvn archetype:generate \ -DarchetypeGroupId=org.codelibs \ -DarchetypeArtifactId=elasticsearch-plugin-archetype \ -DarchetypeVersion=1.5.0 \ -DelasticsearchVersion=1.7.5 \ -DgroupId=com.github.jun06t \ -DartifactId=elasticsearch-sample \ -Dversion=1.7.5-SNAPSHOT \ -DpluginName=sample
フォルダ構造
. ├── README.md ├── pom.xml └── src └── main ├── assemblies │ └── plugin.xml ├── java │ └── com │ └── github │ └── jun06t │ ├── samplePlugin.java │ ├── module │ │ └── sampleModule.java │ ├── rest │ │ └── sampleRestAction.java │ └── service │ └── sampleService.java ├── main.iml └── resources └── es-plugin.properties
今回はRestAPIしか使用しないため、不要なコードを削除します。
$ rm -rf service/ $ rm -rf module/
samplePlugin.java
同様にコードも修正します
package com.github.jun06t; import java.util.Collection; import com.github.jun06t.rest.sampleRestAction; import org.elasticsearch.plugins.AbstractPlugin; import org.elasticsearch.rest.RestModule; public class samplePlugin extends AbstractPlugin { @Override public String name() { return "samplePlugin"; } @Override public String description() { return "This is a elasticsearch-sample plugin."; } // for Rest API public void onModule(final RestModule module) { module.addRestAction(sampleRestAction.class); } }
インストール
コードが用意できたらパッケージを作成します。
$ mvn package
.jarファイルができたらインストールします。
$ sudo ./bin/plugin --url file:///${your_plugin_path}/elasticsearch-sample-1.7.5-SNAPSHOT.jar -i elasticsearch-sample
再起動します。
$ sudo service elasticsearch restart
動作確認
$ curl -s http://localhost:9200/test_index/_hello | jq . { "description": "This is a elasticsearch-sample response: Mon Feb 15 05:56:38 UTC 2016", "type": null, "index": "test_index" }
以上です。お疲れ様でした。