ElasticSearch学习总结(八):插件的开发,elasticsearch插件
本文主要总结Elasticsearch 自定义 REST 接口的插件开发流程。
1. 插件介绍
本插件逻辑比较简单,主要用来返回包含指定前缀的节点列表。
2. 代码说明
插件主要包括两部分的内容,一部分用来对插件的注册,另一部分负责对业务逻辑的处理
插件注册部分:
public class CustomerRestActionPlugin extends Plugin implements ActionPlugin {
public CustomerRestActionPlugin(){
super();
System.out.println("Plugin for node name search");
}
@Override
public List<Class<? extends RestHandler>> getRestHandlers() {
return Collections.singletonList(CustomerRestAction.class);
}
}
业务逻辑处理部分:
@Override
protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient nodeClient) throws IOException {
final String nodePrefix = restRequest.param("prefix", "");
return (channel) -> {
nodeClient.admin().cluster().prepareNodesInfo().all().execute(new RestBuilderListener<NodesInfoResponse>(channel) {
@Override
public RestResponse buildResponse(NodesInfoResponse nodesInfoResponse, XContentBuilder xContentBuilder) throws Exception {
List<String> nodes = new ArrayList<String>();
for (NodeInfo nodeInfo : nodesInfoResponse.getNodes()) {
if (nodePrefix.isEmpty()) {
nodes.add(nodeInfo.getNode().getName());
} else if (nodeInfo.getNode().getName().startsWith(nodePrefix)) {
nodes.add(nodeInfo.getNode().getName());
}
}
xContentBuilder.startObject().field("nodes", nodes).endObject();
return new BytesRestResponse(RestStatus.OK, xContentBuilder);
}
});
};
}
3. 打包部署
3.1 打包与部署
通过以下命令生成压缩包,压缩包中主要包括jar文件,配置文件等。
mvn clean package
通过执行该命令,在target/release目录下会生成名称为elasticsearch-esext-5.1.1.zip的压缩包
3.2 部署
3.3 验证
执行已下命令,查看返回结果
curl -XGET 'localhost:9200/_masting/nodes?prefix=test'
4. Git代码
完整代码,可从 https://github.com/Eric-aihua/esext.git 获取
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。