在线多表join快速搭建

更新时间:
复制 MD 格式

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

前提条件

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

  2. 首次登录阿里云控制台时,系统会提示先创建AccessKey才能继续使用。

操作步骤

  1. 创建并购买应用。

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

  3. 搜索测试。

创建应用

  1. OpenSearch-高性能检索版实例管理页,单击创建实例

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

    可选的商品版本包括行业算法版LLM智能问答版高性能检索版向量检索版召回引擎版

    商品版本选择高性能检索版

    应用名称由英文字母开头,由数字、英文字母或下划线组成,长度不超过30个字符,创建后无法修改。资源组按需选择或创建。

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

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

    • 应用名称:可自定义。

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

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

  3. 确认订单,勾选服务协议后,单击立即开通

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

    实例付费类型显示为按量付费,单击操作列的配置可进行应用配置。

配置应用

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

    此时新购实例的状态显示为待配置

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

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

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

    • 通过数据源创建应用结构,适用于RDS、MaxCompute等数据源同步场景。此功能可快速从源表结构生成初始应用结构,减少手动构造工作量并降低出错概率。具体详见数据源配置

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

    第一张表名为 main,包含字段 m_id(INT,主键)、m_name(LITERAL)、m_age(LITERAL)、m_titile(TEXT)。第二张表名为 table_1,包含字段 t_id_1(INT,主键)、t_name(LITERAL)、t_age(LITERAL)、t_title(TEXT)。

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

    注意

    说明

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

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

    索引结构配置页面包含以下区域:索引字段列表(配置索引名称、包含字段及分析方式)、属性字段列表分列字段列表(选填)和高级配置(选填)。多张表(如 main 表和 table_1 表)需分别展开单独配置。

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

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

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

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

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

  4. 在各表设置(如 areas 表设置test 表设置)中,展开分列字段列表(选填)区域,在包含字段列中添加分列字段。

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

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

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

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

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

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

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

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

    页面中会展示 maintable_1 两个数据来源区域,需要分别单击对应区域下方的 添加数据源 进行配置。

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

  6. 配置完成后,单击完成:

    单击完成后,页面跳转至实例详情页。

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

    此时线下应用状态显示为应用初始化中

搜索测试

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

    在左侧导航栏选择功能扩展 > 搜索测试,或在实例列表的操作列中单击搜索测试进入搜索测试页面。

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

    SQL查询输入框中输入多表JOIN语句,例如 SELECT ... FROM auction_table INNER JOIN trade_table ON auction_table.id = trade_table.auction_id WHERE contain(auction_table.user_id, ?) ORDER BY ... LIMIT 20 OFFSET 0,通过 dynamic_params=123,456 传入查询参数,单击执行后下方展示查询结果。

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

注意事项

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

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

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

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

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

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