最近在做blog的迁移,把原先的文章准备迁移到新的blog平台上。
先简单的介绍下项目背景吧,[Es的版本是2.4 hbase是1.2] ,最近公司业务调整 需要把原有的数据从关系型数据库调整到Hbase中,奈何Hbase做查询性能并不是那么优秀,所以准备集成Es做二级索引。在网上找了一大堆的资料 全部都是ElasticSearch1.X的 到2.X的版本基本上没有资料。自己折腾了好几天 现在终于整合成功。
好了 不多说 上代码 代码是基于Hbase的BaseRegionObserver修改写的,我这里重写了BaseRegionObserver
的postPut的方法和start方法 由于只是一个简单的Demo 还有很多方便没有考虑 所以自己供参考用,整个项目也只有这一个类,需要删除和更新也同步的同学请自己完善类 的方法。
。
import org.apache.hadoop.hbase.Cell; |
这里说明一下,如果没有安装delete-by-query的插件则不需要添加addPlugin(DeleteByQueryPlugin.class)这句话请自行删除.
POM文件部分内容如下,delete-by-query的引用看具体情况 是用来做Es的查询删除用的,但是前二个是必须的。
<dependencies> |
好了,整体的修改就可以。用修改的jar替换hbase的jar。然后hbase集群启动的时候当有数据进来的时候Es也会同步新增数据。这样就可以用Es做hbase的二级索引查询了。
但是目前这中方式对hbase的侵入性较大,后续如果有什么更好的方法,我这边也会同步跟进更新。