在线多表join快速搭建

本文介绍如何快速搭建支持在线多表join功能的实例。

前提条件

  1. 成功注册阿里云账号并通过实名认证

  2. 第一次开通阿里云账号并登录控制台时,会提示先创建access key才能继续使用。

  • 创建及使用应用依赖access key参数,主账号下access key参数不能为空。

  • 在为主账号创建access key参数后,还可以再创建RAM子账号access key通过RAM子账号进行访问,RAM子账号赋予对应访问权限,请参考访问鉴权规则

配置多表join

步骤:

  1. 创建并购买应用

  2. 配置应用:定义应用结构->定义索引结构->配置数据源->创建成功

  3. 搜索测试

创建应用

  1. 登录OpenSearch控制台,页面左上角选择“OpenSearch-高性能检索版”,进入“实例管理”页,点击“创建应用”:

image

  1. 选择实例类型,包括商品版本、商品类型、地域和可用区、应用名、集群偏好、存储容量、计算资源,点击“立即购买”:

image

商品版本选择“高性能检索版”。

image

  • 商品类型可选:“包月包年”或“按量付费”

  • 地域和可用区:用户按需选择

  • 应用名称:可自定义

  • 集群偏好:独享存储型 (固定)

  • 存储容量和计算资源保持默认,或按需购买

  1. 确认订单,勾选服务协议后,点击“立即开通”:

image

  1. 开通完成后,可以在控制台列表页,查看待配置状态的实例:

image

配置应用

  1. 在控制台列表页,找到新购的实例,在右侧操作栏中点击“配置”:

image

  1. 定义应用结构:目前提供了 4 种方式的应用结构创建方式,

  • 通过模板创建应用结构。用户可以将自己定义的应用结构创建成模板,可以通过已有模板快速创建出一个新的应用。

  • 通过上传文档创建应用结构。您可以上传已有的数据文件(仅支持JSON格式),系统会自动解析并创建出初始的应用结构(注意字段类型等需要重新定义)。

  • 通过数据源创建应用结构。适用于通过RDS、MaxCompute等数据源同步的场景,可以快速由源表结构创建出初始的应用结构,节省手动构造的工作量,降低出错概率。具体详见数据源配置

  • 通过手动创建应用结构,快速测试接入时使用,这里以该方式为例,创建2张表:

image

字段类型的选择的可参考OpenSearch-高性能检索版表结构

注意

说明

表总数不能超过系统最大限制8个;

  1. 索引结构配置,不同的表需要单独配置:(每张表都需要单独配置)

image

  • 应用结构的配置可参考索引结构

  • 分析方式的选择,可参考文本分析器

  • 属性字段的选择:需要在SELECT 、WHERE、ORDER BY 时使用该字段时,将其设置为属性字段

说明
  • FLOAT,FLOAT_ARRAY,DOUBLE,DOUBLE_ARRAY 不支持设置索引字段

  • TEXT,SHORT_TEXT 不支持设置属性字段

  1. 分列键配置:

image

OpenSearch实例,后端是分布式的部署,在多表场景下,需要多个表join的数据在同一台机器上,如下图:

image

引擎在build索引时会根据用户配置的分列进行hash,将hash结果相同的记录存放在一列上,同时查询时,由查询节点向每一列发起查询请求,每一列根据用户的SQL进行join,不会跨列进行join,最后每列把join后的结果返回给查询接节点,查询节点汇总召回结果内容后,返回给用户。

说明
  • 系统默认已采用主键分列;

  • 只能选择一个字段为分列字段;

  • 分列字段需要保证全局值唯一;

  • 分列字段支持的类型有:INT、LITERAL;

  • 如需非主键join,必须在分列键中配置需要join的字段;

  1. 数据源配置,可根据高性能检索版支持的数据源类型进行配置:

image

点击添加数据源,配置对应的数据源:

image

  1. 配置完成后,点击完成:

image

  1. 在实例详情页中,等待线下应用状态为“正常”后,即可进行查询:

image

搜索测试

  1. 线下应用状态正常,并切换上线后,可在搜索测试页进行搜索测试:

image

  1. 目前多表在线join方式,仅支持SQL查询:

image

详细的SQL语法可参考SQL支持

注意事项

  • 目前仅存储型-独享集群,支持在线多表join;

  • 多表join场景下,仅支持SQL查询;

  • 多表join场景下,不支持自定义分析器

  • 多表join场景下,不支持排序配置;(可以用ORDER BY

  • 多表join场景下,不支持搜索结果展示

  • 存储型-独享集群实例,不可变配为其他规格实例;