【深入浅出】阿里自研开源搜索引擎Havenask变更表结构

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
推荐全链路深度定制开发平台,高级版 1个月
简介: 本文介绍了Havenask的表结构变更,包括表结构简介、全量构建流程和变更表结构三个部分。表结构由schema配置,字段类型包括INT、FLOAT、STRING等,索引有倒排、正排和摘要索引。全量表变更会触发全量构建,完成后自动切换,但直写表不支持直接变更。变更过程涉及使用hape命令更新schema并触发全量build。最后还有全量构建的流程图和具体操作步骤。

一、表结构简介

Havenask的表结构由schema文件进行配置,主要包括字段配置和索引配置。

1、Schema配置

字段类型: https://havenask.net/#/doc/v1-1-0/sql/indexes/field-type

  • INT8UINT8INT16UINT16INT32UINT32INT64UINT64FLOATDOUBLESTRINGTEXTRAW


索引类型: https://havenask.net/#/doc/sql/indexes/intro

  • 倒排索引:NUMBER, STRING, TEXT, PACK, EXPACK, SPATIAL, RANGE, DATE, PRIMARYKEY64/PRIMARYKEY128
  • 正排索引:ATTRIBUTE
  • 摘要: SUMMARY


2、变更表结构

  • 全量表:变更后触发全量,构建完成后自动切换(v1.1.0开始支持)
  • 直写表:暂不支持直接变更表结构
  • 字段类型包括整型、浮点型、字符串、文本和RAW类型等。索引则包括三类,分别是倒排索引、正排索引和摘要索引。当前版本支持全量表变更表结构,然后触发全量build,构建完成后自动切换。需要注意的是,直写表暂不支持直接变更表结构,还需重新建表。

 

二、全量构建流程

用户通过HapeCatalog中提交表相关信息,BSCatalog中获取变更的表信息并触发全量build,构建完成后,将状态写回Catalog suez admin。从Catalog中获取最新build好的索引版本信息,生成target,逐级下发到searcher。然后searcher进行索引切换,完成一次全量表的索引构建和切换的过程。


全量表构建和切换的流程如下图所示:

image.png


 

三、变更表结构

1、过程概述

有关hape命令变更表结构的详细介绍可参考havenask官网文档中的详细解释(链接:https://havenask.net/#/doc/sql/petool/command)。

首先,准备集群创建全量表;然后,查询变更前的表结构;接下来,变更表结构,如添加一个字段,全量构建完成后切换上线;最后,查询表结构变更之后的表内容。


2、全量表变更过程演示

准备集群:

  • hape start havenask
  • hape create table -t in0 -p 1 -s /ha3_install/example/cases/normal/in0_schema.json -f /ha3_install/example/cases/normal/test.data
  • hape gs table/hape gs bs


查询:

  • /ha3_install/sql_query.py --query "select * from in0"


变更表结构:

  • hape update table-schema -t in0 -p 1 -s /ha3_install/example/cases/normal/in0_schema2.json -f /ha3_install/example/cases/normal/test2.data
  • hape gs table/hape gs bs


查询:

  • /ha3_install/sql_query.py --query "select * from in0"


3、具体步骤

  • 首先,创建一个havenask运行容器,容器名为havenask_schema_test,进入运行容器。进入容器后,拉起一个havenask集群,接下来,创建一张全量表,其相关命令可以参考链接(https://developer.aliyun.com/article/1495436?groupCode=havenask),将表名改为in0。在创建全量表期间,我们可以通过havenask gs bs命令查看当前的build service状态,可以看到buildInfo以及build service任务的状态。一段时间后,可以用hape gs bs命令查看全量构建状态,可以看到带有full关键字的任务均已经处理完成,并且buildInfo中也产生了当前版本的信息,这说明全量已经构建好完成。


  • 查询query可以看到查询正常,且当前schema有一个hits字段。然后,更改schema,触发全量build。最后,在索引切换上线之后查询其是否生效。创建一个用于测试的目录,该目录需要被havenask容器访问,因此可以在home目录。
    因为havenask默认挂载了home目录,目录名称为test_data。将ha3_install目录下example当中的schema以及测试数据拷贝到这个目录,可以添加写入数据的权限,确保可以修改。


  • 首先,修改schema,可以增加一个hits2字段保存;然后,修改全量的数据,将hits2改为hits10倍,把hits的其中一篇doc也改成123;接下来,更新schema,相关的hape命令与建表非常类似,只需要把create table 改成update table-schema即可,并将schema路径改为修改后的schema文件,将测试数据也改成修改后的测试数据文件,详细的命令可以参考hape命令中update的更新全量表schema;更新schema后,会触发新的一轮全量build,可以通过hape gs bs查看新版本的全量build状态,可以看到新版本的全量状态 current当中有了版本的信息,这表示该全量已经构建完成。


  • 再次查询,可以看到新增的hits2和修改的数据均已生效。


四、结尾

具体Havenask变更表结构的演示视频可以通过链接查看,欢迎各位开发者使用。


视频链接:https://developer.aliyun.com/live/253691?spm=a2c6h.14164896.0.0.786b47c54kOhxO&scm=20140722.S_community@@%E8%A7%86%E9%A2%91@@253691._.ID_253691-RL_havenask%E5%85%A5%E9%97%A8%E8%AF%BE%E7%A8%8B%E7%AC%AC5%E8%8A%82%E5%8F%98%E6%9B%B4%E8%A1%A8%E7%BB%93%E6%9E%84-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_0


关注我们:

Havenask 开源官网:https://havenask.net/

Havenask-Github 开源项目地址:https://github.com/alibaba/havenask

阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch

钉钉扫码加入 Havenask 开源官方技术交流群:

1715594790746.png

目录
相关文章
|
7月前
|
SQL 运维 搜索推荐
《揭秘,阿里开源自研搜索引擎Havenask的在线检索服务》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
83690 138
|
7月前
|
存储 消息中间件 搜索推荐
【前沿技术】 阿里开源搜索引擎Havenask的消息系统
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的消息系统--Swift,它是一个设计用于处理大规模的数据流和实时消息传递的高性能、可靠的消息系统。
60250 3
|
7月前
|
消息中间件 Docker 索引
【一文解读】阿里自研开源核心搜索引擎 Havenask简介及发展历史
本次分享内容为Havenask的简介及发展历史,由下面五个部分组成(Havenask整体介绍、名词解释、架构、代码结构、编译与部署),希望可以帮助大家更好了解和使用Havenask。
72032 0
【一文解读】阿里自研开源核心搜索引擎 Havenask简介及发展历史
|
7月前
|
消息中间件 运维 数据处理
【技术解析 | 实践】Havenask问题排查
本次分享内容为Havenask的问题排查,由下面4个部分组成(Hape运维脚本问题、集群相关问题、表相关问题、数据写入与查询问题),希望可以帮助大家更好了解和使用Havenask。
52476 1
|
7月前
|
SQL 调度 Swift
【深入浅出】阿里自研开源搜索引擎Havenask日志查询
本次分享内容为Havenask的日志查询,文章包含了具体查询步骤和举例、实操演示,希望可以帮助大家更好的使用Havenask。
55374 0
|
7月前
|
SQL JSON 资源调度
【深入浅出】阿里自研开源搜索引擎Havenask集群扩备份
本次分享内容为Havenask的集群扩备份,共2个部分组成(集群备份简介、 集群备份实践),希望可以帮助大家更好了解和使用Havenask。
66292 0
|
7月前
|
SQL 开发者 索引
【深入浅出】阿里自研开源搜索引擎Havenask集群扩分片
本次分享内容为Havenask的集群扩分片,共2个部分组成( 集群扩分片简介、 集群扩分片实践),希望可以帮助大家更好了解和使用Havenask。
82417 0
|
SQL 安全 关系型数据库
写在开源前 1 天:OceanBase ODC 开源背后的故事
关于开源协议选择,ODC 开源选择了足够开放的 Apache 2.0 协议,如果和您的产品矩阵能够互补,我们鼓励基于 ODC 开源项目打造自己的完整解决方案提供给客户。对于 OceanBase 而言,这其实也有助于实现最理想的企业级软件销售模式 “分销”,从数据库厂商角度来说,如果能帮助更多合作厂商获得商业利益,销售和交付成本的问题就可以比较彻底的解决。
196 0
|
存储 运维 架构师
直播预告 | PolarDB 开源版在可计算存储上的降本增效原理和实践
通过 PolarDB 开源数据库和 ScaleFlux 可计算存储产品 CSD2000/3000,也可以降低数据库存储成本并且进一步提升性能。本次分享主要介绍 CSD 降本增效原理以及 PolarDB-X 和 PolarDB-PG 开源版在 CSD 上的部署实践。
直播预告 | PolarDB 开源版在可计算存储上的降本增效原理和实践
|
UED 开发者 安全
重磅:阿里云文档开源
阿里云重磅宣布,6月7开始对阿里云文档进行开源!这一重大举措,体现了阿里云作为业界领导者海纳百川的恢弘气度、高瞻远瞩的开阔格局、和用户至上的勇敢担当。 文档开源的价值
3326 0