欢迎投稿

今日深度:

ElasticSearch学习总结(八):插件的开发,elasticsearch插件

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 获取

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/36194.html NewsArticle ElasticSearch学习总结(八):插件的开发,elasticsearch插件 本文主要总结Elasticsearch 自定义 REST 接口的插件开发流程。 1. 插件介绍 本插件逻辑比较简单,主要用来返回包含指定前缀的节点...
相关文章
    暂无相关文章
评论暂时关闭