文档首页 > > 用户指南> 集群模式> HBase Elasticsearch全文检索> 全文检索概述

全文检索概述

分享
更新时间: 2019/05/27 GMT+08:00

HBase-Elasticsearch的全文检索能力,是以HBase为基础存储用户源数据,在KV(key value)查询能力的基础上使用云搜索服务(简称CSS)中的Elasticsearch搜索引擎来补充全文检索能力。用户可以根据自身业务需求来定义HBase中的哪些字段需要全文检索,在创建HBase表时会自动连接用户指定的云搜索服务集群并在Elasticsearch中创建索引,索引数据存放在Elasticsearch。同时,HBase的原生API(put和scan接口)支持索引数据的写入和查询。

使用方法

原理

CloudTable作为大数据存储服务,用户数据以Byte类型存储,同时提供高效的kv随机查询能力。在此基础上,用户根据自身业务需求,自定义schema来指定部分字段的数据类型(一般是文本类型)来扩展CloudTable的全文检索能力。CloudTable服务是计算和存储分离,数据存储易扩容和低成本,适合作为海量源数据(任何数据类型)的主存储系统,云搜索服务(Elasticsearch)保留轻量级的索引数据来支持关键词检索。如下图所示:

图1 原理图

用户创建HBase表时如果定义部分字段开启全文索引,HBase写入数据时会自动同步全文索引数据到云搜索服务中,同时HBase原生的数据读取接口scan在kv读取能力上,也支持常用的全文检索能力。对于复杂的高阶检索能力,用户可以先调用Elasticsearch的接口再调用CloudTable的读接口来组合完成业务逻辑。

使用场景

用户业务数据海量,需要HBase作为大数据在线存储系统提供最基础的高效高并发低时延KV查询能力。同时,数据的字段种类、数量众多,即对应的业务多样化。比如某表的一行数据,部分文本字段需要用关键词来全文检索,部分字段是二级索引,以及部分字段应用于标签位图索引。此场景适合CloudTable服务开启Elasticsearch全文检索能力,同时也保留其他业务扩展能力。例如:

  1. 搜索网站,实时存储海量用户的搜索词条信息、用户环境信息以及基本信息,并按照商品关键词提取用户信息,信息立即转售给第三方电商平台。
  2. 智慧医院的智能病例系统,存储病人就医信息,信息包括病人的基本信息、身体当前状态信息、医生当前职业信息、病情描述、诊断结果描述、服用药品等信息。医院信息平台根据当前社会的疫情、违禁药品、或技术突破等关键词,统计或查找历史就医的病人,回访病人或者联系病人使用新技术二次诊断等创新型贴心业务。
  3. 政府智能舆情治理系统,海量存储主流媒体平台用户的社会性言论和用户信息、转发次数等数据。检索出当前的热点事件,如果是造谣事件,系统自动提醒用户当前事件的真实性、用户发表/转发的社会影响性数据、以及相关的法律条文和类似案件。智能的反馈机制给造谣用户起到震慑作用,引导良好的言论风气。

HBase Elasticsearch schema定义说明

HBase通过表的METADATA来存储Elasticsearch schema的定义:

表1 schema定义

字段名称

value说明

是否必填

hbase.index.es.enabled

该HBase表在Elasticsearch中是否创建全文索引,true表示创建,默认为false。

hbase.index.es.endpoint

云搜索服务集群(Elasticsearch引擎)的访问地址,例如'ip1:port,ip2:port'。

hbase.index.es.indexname

HBase表对应在Elasticsearch中的索引名称,必须小写。

hbase.index.es.shards

Elasticsearch中索引的分片数量,默认5。取值为大于等于1的整数。

hbase.index.es.replicas

Elasticsearch中的索引的副本数量,默认1。取值为大于等于0的整数。

hbase.index.es.schema

HBase和Elasticsearch的字段映射,json数组格式的字符,每个元素包含以下字段:

  • name:Elasticsearch中的字段名称。
  • type:Elasticsearch中的字段类型。
  • hbaseQualifier:数据源HBase qualifier。
  • analyzer:text类型的字段通过“analyzer”可以指定分词器。中文分词器一般使用“ik_smart”。默认是“Standard”分词器,支持英文。

例如:

'[ {"name":"contentCh","type":"text","hbaseQualifier":"cf1:contentCh","analyzer":"ik_smart"}, {"name":"contentEng","type":"text","hbaseQualifier":"cf2:contentEng"},{"name":"id","type":"long","hbaseQualifier":"cf1:id"} ]'

HBase-Elasticsearch全文检索当前支持的数据类型有{"text", "long", "integer", "short", "byte", "double", "float","boolean"},也就是schema中type的取值类型。text是Elasticsearch中的文本类型。全文检索一般是指对text类型数据的检索,同时也支持基本数据类型的准确检索。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问