【Elasticsearch】优秀实践-ES+Hbase的实现

前言

因为之前在项目上,需要用到ES+Hbase方案,最后经过各种测试和验证,最终项目完成上线。因为在实际的过程遇到不少的问题,和理论还是有一定的差距。

纸上得来终觉浅,绝知此事要躬行。----古人诚不欺我

基本原理

很简单,将Elasticsearch的DOC ID和Hbase的rowkey相关联:
【Elasticsearch】优秀实践-ES+Hbase的实现_第1张图片
将源数据根据业务特点划分为索引数据和原始数据:

索引数据:指需要被检索的字段,存储在Elasticsearch集群中;

原始数据:指不需要被ES检索的字段,包括某些超长的文本数据等,存储在Hbase集群中。

将HBase的rowkey设定为ES的文档ID,搜索时根据业务条件先从ES里面全文检索出相对应的文档,从而获取出文档ID,即拿到了rowkey,再从HBase里面抽取数据。

优点

  1. 发挥了Elasticsearch的全文检索的优势,能够快速根据关键字检索出相关度最高的结果;
  2. 同时减少了Elasticsearch的存储压力,这种场景下不需要存储检索无关的内容,甚至可以禁用_source,节约一半的存储空间,同时提升最少30%的写入速度;
  3. 避免了Elasticsearch大数据量下查询返回慢的问题,大数据量下Hbase的抽取速度明显优于Elasticsearch;
  4. 各取所长,发挥两个组件各自的优势。

缺点

说完了优点,其实也有不少坑,一把辛酸泪…

1、两个组件之间存在时效不一致的问题

相对而言,Elasticsearch的入库速度肯定是要快于Hbase的,这是需要业务容忍一定的时效性,对业务的要求会比较高。

2、同时管理两个组件增加了管理成本

显而易见,同时维护两套组件的成本肯定是更大的。

小结

总的来说,如果要使用ES+HBase,要充分考虑业务数据是否适合这种模式。

你可能感兴趣的:(Elasticsearch)