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

本文涉及的产品
推荐全链路深度定制开发平台,高级版 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

目录
相关文章
|
1月前
|
SQL 运维 搜索推荐
《揭秘,阿里开源自研搜索引擎Havenask的在线检索服务》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
82993 138
|
1月前
|
存储 自然语言处理 搜索推荐
【技术解析 | 实践】Havenask分析器
本次分享内容为Havenask的分析器,本次课程主要分为3部分内容(分析器介绍、解释分析器主要配置、实战演示),希望本次通过分享帮助大家更好了解和使用Havenask。
52141 3
【技术解析 | 实践】Havenask分析器
|
1月前
|
存储 关系型数据库 分布式数据库
数据管理的艺术:PolarDB开源版详评与实战部署策略(二)
PolarDB-PG是阿里云的一款云原生关系型数据库,100%兼容PostgreSQL,支持Oracle语法,采用Shared-Storage存储计算分离架构,提供极致弹性、毫秒级延迟的HTAP能力。具备高可用、高可靠和弹性扩展特性,支持单机、存储计算分离和X-Paxos三节点等多种部署形态。通过Docker可快速部署实例,包括单节点、一主一备和HTAP(一主两备)实例。此外,文章还介绍了在ECS上使用ESSD云盘搭建PolarDB-PG的详细步骤,适合开发和测试环境。
222702 22
|
1月前
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
233682 22
|
1月前
|
SQL 调度 Swift
【深入浅出】阿里自研开源搜索引擎Havenask日志查询
本次分享内容为Havenask的日志查询,文章包含了具体查询步骤和举例、实操演示,希望可以帮助大家更好的使用Havenask。
55295 0
|
1月前
|
消息中间件 Docker 索引
【一文解读】阿里自研开源核心搜索引擎 Havenask简介及发展历史
本次分享内容为Havenask的简介及发展历史,由下面五个部分组成(Havenask整体介绍、名词解释、架构、代码结构、编译与部署),希望可以帮助大家更好了解和使用Havenask。
71611 0
【一文解读】阿里自研开源核心搜索引擎 Havenask简介及发展历史
|
1月前
|
SQL JSON 资源调度
【深入浅出】阿里自研开源搜索引擎Havenask集群扩备份
本次分享内容为Havenask的集群扩备份,共2个部分组成(集群备份简介、 集群备份实践),希望可以帮助大家更好了解和使用Havenask。
66191 0
|
1月前
|
存储 自然语言处理 开发者
【技术解析 | 实践】Havenask文本索引
本次分享内容为Havenask的文本索引,本次课程主要分为两部分内容,首先简要介绍倒排索引的数据结构和文本索引的特性,然后进行对文本索引配置不同分析器的实践,希望通过分享帮助大家更好了解和使用Havenask。
41785 3
|
1月前
|
SQL 开发者 索引
【深入浅出】阿里自研开源搜索引擎Havenask集群扩分片
本次分享内容为Havenask的集群扩分片,共2个部分组成( 集群扩分片简介、 集群扩分片实践),希望可以帮助大家更好了解和使用Havenask。
82348 0
|
11月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——一读多写
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——一读多写自制脑图
241 1