概要
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"
}
以上です。お疲れ様でした。