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

简介: 本文介绍了Havenask的表结构变更,包括表结构简介、全量构建流程和变更表结构三个部分。表结构由schema配置,字段类型包括INT、FLOAT、STRING等,索引有倒排、正排和摘要索引。全量表变更会触发全量构建,完成后自动切换,但直写表不支持直接变更。变更过程涉及使用hape命令更新schema并触发全量build。最后还有全量构建的流程图和具体操作步骤。

一、表结构简介

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

1、Schema配置

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

  • INT8,UINT8,INT16,UINT16,INT32,UINT32,INT64,UINT64,FLOAT,DOUBLE,STRING,TEXT,RAW


索引类型: 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,构建完成后自动切换。需要注意的是,直写表暂不支持直接变更表结构,还需重新建表。

 

二、全量构建流程

用户通过Hape向Catalog中提交表相关信息,BS从Catalog中获取变更的表信息并触发全量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改为hits的10倍,把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

目录
相关文章
|
SQL 运维 搜索推荐
《揭秘,阿里开源自研搜索引擎Havenask的在线检索服务》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
85801 138
|
存储 消息中间件 搜索推荐
【前沿技术】 阿里开源搜索引擎Havenask的消息系统
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的消息系统--Swift,它是一个设计用于处理大规模的数据流和实时消息传递的高性能、可靠的消息系统。
61768 3
|
人工智能 搜索推荐 异构计算
|
10月前
|
机器学习/深度学习 搜索推荐 算法
广告系统:广告引擎如何做到在 0.1s 内返回广告信息?
广告系统是互联网核心营收支柱,支撑Google、Facebook等公司超80%收入。其本质是高并发、低延迟的实时检索系统,需在0.1秒内完成百万级广告匹配。本文详解广告引擎架构:通过标签过滤、树形分片优化索引;引入向量检索实现智能匹配;采用非精准打分预筛+深度学习精排的混合排序策略;并在离线索引构建时前置过滤无效广告,压缩检索空间。结合业务特点,从索引、召回到排序全方位提升性能,保障高效精准投放。
|
6月前
|
JSON 数据安全/隐私保护 计算机视觉
告别付费套路!PhotoLab:开源免费的全功能桌面图片工作站,解锁所有核心能力
PhotoLab Pro是一款开源免费的桌面图片工作站,集成图像编辑、拼图排版、JPEG批量压缩、高级批量处理、图片转PDF五大模块,无广告、无VIP、无功能阉割,支持宏录制与跨模块协同,开箱即用。
告别付费套路!PhotoLab:开源免费的全功能桌面图片工作站,解锁所有核心能力
|
7月前
|
数据采集 供应链 安全
商品条码查询-药品条码查询-商品条码识别-药品条码识别API接口简介
商品条码查询API支持13/14位条码识别,可快速获取商品名称、品牌、厂家、规格、价格、产地、图片等信息,助力真伪鉴别、溯源追踪、零售结算、库存管理及消费者比价决策,提升数据准确性与运营效率。
1155 1
|
10月前
|
数据采集 存储 机器学习/深度学习
搜索引擎的整体架构和工作过程
搜索引擎由爬虫、索引和检索三大系统构成:爬虫负责抓取网页并存储;索引系统对网页去重、分析并构建倒排索引;检索系统通过查询分析、相关性排序等技术,返回精准结果。全过程融合文本分析、机器学习与大规模计算,确保高效准确搜索。
|
自然语言处理 数据处理 调度
《Havenask分布式索引构建服务--Build Service》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask分布式索引构建服务——Build Service,主打稳定、快速、易管理,是在线系统提升竞争力的一大利器。
103272 3
《Havenask分布式索引构建服务--Build Service》
|
运维 搜索推荐 调度
Ha3搜索引擎简介
Ha3是阿里巴巴搜索团队开发的搜索引擎平台,它为阿里集团包括淘宝、天猫在内的核心业务提供搜索服务支持。
27460 1