怎么开发一款elasticseach的插件
2016-04-11 16:34
465 查看
第一步:首先创建一个java的maven工程,依赖elasticsearch的jar包
第二步:在类文件下创建一个es-plugin.properties文件,指定插件加载入口
第三步:创建MyPlugin类,继承org.elasticsearch.plugins.AbstractPlugin。
第四步:创建自定义的Module。继承org.elasticsearch.common.inject.AbstractModule。注入我们的服务类。
第五步:编写我们的服务类MyService,使用org.elasticsearch.common.inject.Inject注解,注入我们所需要的elasticsearch内部对象
Settings setting是系统配置项
IndicesService indicesService 是操作索引服务对象
你还可以注入更多的内部对象,你可以参考AbstractModule所有内部子类bind的类。
只要你写到构造函数里,elasticsearch在加载你的插件的时候,都会传递给你。
你可以在构造方法里,初始化一些你自己的逻辑,例如给内部对象加个监听器啥的。
第六步:在elasticsearch的plugins目录下创建一个目录my-plugin。把你的代码打包,以及所有你依赖的第三方jar包都拷贝到这个目录下。重启elasticsearch,你的插件就会被加载了。
本文地址:http://zhaoyanblog.com/archives/671.html
1 2 3 4 5 6 | <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>1.2.1</version> <scope>provided</scope> </dependency> |
1 | plugin=org.elasticsearch.plugin.zhaoyanblog.myplugin |
1 2 3 4 5 67 | package org.elasticsearch.plugin.zhaoyanblog; import org.elasticsearch.common.collect.ImmutableList; import org.elasticsearch.common.inject.Module; import org.elasticsearch.plugins.AbstractPlugin; import org.elasticsearch.zhaoyanblog.MyModule; public class MyPlugin extend org.elasticsearch.plugins.AbstractPlugin { //我们的插件Module private static final Collection<Class<? extends Module>> modules = ImmutableList.<Class<? extends Module>> of(MyModule.class); /** * {@inheritDoc} */ public String name() { //插件名字 return "my-plugin"; } /** * {@inheritDoc} */ public String description() { //插件描述 return "my first plugin"; } @Override public Collection<Class<? extends Module>> modules() { return modules; } } |
1 2 3 4 5 67 | package org.elasticsearch.zhaoyanblog; import org.elasticsearch.common.inject.AbstractModule; public class MyModule extends AbstractModule { /** * {@inheritDoc} */ @Override protected void configure() { bind(MyService.class).asEagerSingleton(); } } |
1 2 3 4 5 67 | package org.elasticsearch.zhaoyanblog; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.indices.IndicesService; public class MyService { @Inject public MyService(Settings setting, IndicesService indicesService) { //your code } } |
IndicesService indicesService 是操作索引服务对象
你还可以注入更多的内部对象,你可以参考AbstractModule所有内部子类bind的类。
只要你写到构造函数里,elasticsearch在加载你的插件的时候,都会传递给你。
你可以在构造方法里,初始化一些你自己的逻辑,例如给内部对象加个监听器啥的。
第六步:在elasticsearch的plugins目录下创建一个目录my-plugin。把你的代码打包,以及所有你依赖的第三方jar包都拷贝到这个目录下。重启elasticsearch,你的插件就会被加载了。
本文地址:http://zhaoyanblog.com/archives/671.html
相关文章推荐
- ViewPager+TabLayout(谷歌支持包)实现联动效果
- cocos2d 中 scene(), create(), init() 调用关系
- 反转链表 (25)
- memcached 在linux下面的安装
- 简单Python3爬虫程序(4)融合1,2:不知疲倦的爬虫
- 芸芸背包
- Java进阶学习第二天——CCS与JS入门
- ASP.Net MVC开发基础学习笔记(4):校验、AJAX与过滤器
- ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法
- MySQL Workbench 6.3.6 在windows下的 安装与使用(一)
- 更新UI操作,Handler与runOnUiThread
- iOS 的旋屏控制技巧
- BZOJ1483: [HNOI2009]梦幻布丁
- Android——自定义动画
- the 7 habits of highly effective people - be proactive
- LayoutInflater的获取与使用
- 【codevs 1282】 约瑟夫问题 【题解】
- mysql存储过程
- listview长按弹出窗popupwindow
- 程序员的一些心得体验!