重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如何利用elasticsearch插件进行开发?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
站在用户的角度思考问题,与客户深入沟通,找到隆昌网站设计与隆昌网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖隆昌地区。检索引擎Elasticsearch支持插件模式。有些时候你可能须要安装一些插件。甚至自己开发插件,这里就提供一个開始ES插件开发演示样例,ES版本号为1.5.2。
一、插件类继承自org.elasticsearch.plugins.AbstractPlugin
package org.elasticsearch.plugin.helloworld; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import org.elasticsearch.common.component.LifecycleComponent; import org.elasticsearch.common.inject.Module; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.plugins.AbstractPlugin; import org.elasticsearch.rest.RestModule; public class HelloWorldPlugin extends AbstractPlugin { final ESLogger logger = Loggers.getLogger(getClass()); @Override public String name() { //插件名称 return "HelloWorld"; } @Override public String description() { //插件描写叙述 return "Hello World Plugin"; } //处理模块,由于系统中有非常多种Module,所以须要对其类型进行推断 @Override public void processModule(Module module) { if(module instanceof RestModule) { ((RestModule)module).addRestAction(HelloWorldHandler.class); } if(module instanceof HelloModule) { logger.info("############## process hello module #####################"); } } @Override public Collectionmodules(Settings settings) { //创建自己的模块集合 //假设没有自己定义模块,则能够返回空 HelloModule helloModule = new HelloModule(); ArrayList list = new ArrayList<>(); list.add(helloModule); Collections.unmodifiableList(list); return list; } @SuppressWarnings("rawtypes") @Override public Collection > services() { //创建自己的服务类集合,服务类须要继承自LifecycleComponent。ES会自己主动创建出服务类实例,并调用其start方法 //假设没有自己定义服务类。则能够返回空 Collection > list = new ArrayList<>(); list.add(HelloService.class); return list; } }