OSS + API 数据源


本文介绍添加表选择对象存储OSS+API为数据源时的操作步骤。

添加OSS+API数据源,需要以下两步:

  1. 开通OSS服务

  2. OSS+API数据源添加


步骤一:开通OSS服务

1. 开通OSS服务

开通的OSS服务,需要和已购买的OpenSearch服务在相同地域。

image.png

说明
  • 执行新增OSS数据源操作时,将会自动创建一个服务关联角色(如已经创建,则不会重复创建)AliyunServiceRoleForSearchEngine,开放搜索使用此角色来访问您在其他云产品中的资源以完成相应功能。

2. 创建Bucket

在上传文件到OSS之前,您需要创建一个用于存储文件的存储空间Bucket,可以参考创建存储空间了解。

路径:对象存储OSS 管理控制台 → Bucket列表 → 创建 Bucket

image.png

说明
  • 召回引擎版不支持无地域属性的OSSbucket。

进入已创建的Bucket内,添加OpenSearch标签。

路径:Bucket配置 → Bucket 标签 → 创建标签

image.png

image.png

3. OSS文件格式设置

a. OSS文件格式

为了使传输的文件能够被用于索引构建的数据源,请确保:

  • 文件采用UTF-8编码。

  • 文件数据格式转化为HA3格式或JSON格式。

ⅰ. JSON格式设置

多条记录示例,参考以下示例:

{"field_double": ["100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300"], "title": "华为 Mate 9 麒麟960芯片 徕卡双镜头", "color": "红", "empty_int32": "", "price": "3599", "CMD": "add", "nid": "1", "gather_cn_str": "", "desc": ["str1", "str2", "str3"], "brand": "Huawei", "size": "5.9","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
{"field_double": ["100.0", "221.123", "500.3333333", "100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300", "100", "200", "300"], "title": "Huawei/华为 P10 Plus全网通手机", "color": "蓝", "empty_int32": "", "price": "4388", "CMD": "add", "nid": "2", "gather_cn_str": "color蓝", "desc": ["str1", "str2", "str3", "str1", "str2", "str3"], "brand": "Huawei", "size": "5.5","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}

说明:

  • JSON字段的类型都是string,引擎建索引的时候,会根据schema转换为字段指定的类型。

  • '\n'表示换行符,单条记录不能有换行符,

ⅱ. HA3格式设置
  1. 首先看一个完整的数据文件standard_sample.data的内容。

CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_

  1. 文件分隔符定义:可以看到上面的数据文件中总共有两个命令,分别是add、delete。每个命令由多行组成,每行都是一个key-value对。 命令与命令之间用'^^\n'分隔,每一对key-value之间以'^_\n'分隔,多值之间以'^]'分隔,以下是文件分隔符介绍。

C++编码

ASCII

16进制

描述

(emacs/vi)中的显示形态

emacs中输入方法

vi中输入方法

"\x1F\n"

1F0A

key value分隔符

^_(接换行)

C-q C-7

C-v C-7

"\x1E\n"

1E0A

命令分隔符

^^(接换行)

C-q C-6

C-v C-6

"\x1D"

1D

multi value 分隔符

^]

C-q C-5

C-v C-5

"\x1C"

1C

section weight标志符

^\

C-q C-4

C-v C-4

"\x1D"

1D

section 分隔符

^]

C-q C-5

C-v C-5

"\x03"

03

sub doc 字段分隔符

^C

C-q C-c

C-v C-c

  1. 命令格式定义:Add command formatadd命令表示往索引中增加新的内容,add命令第一行必须为CMD=add,后面是该文档的field,field顺序可以与schemafields顺序一致,所有出现的field必须是fields中指定的。

CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里云计算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^

  1. Delete command format delete命令表示从索引中删除指定的内容。delete命令第一"行"必须为CMD=delete,接下来的"行"为index schema中定义属性为primary key 的field,以及用于partition hashfield,如果两个field相同,则只需要出现一个field。

CMD=delete^_
PK=12345321^_
^^CMD=delete^_
PK=12345321^_
^^

b. 上传文件到Bucket

返回到新创建的Bucket控制页,在左侧导航栏找到文件管理 → 文件列表 → 上传文件

image.png

待上传文件 项中选择扫描文件的方式,勾选好上传的内容,再点击 上传文件 ,完成文件的上传。

image.png

image.png

步骤二:OSS+API数据源添加

购买实例:可参考购买OpenSearch召回引擎版实例了解。

1. 表基础信息

实例列表 中找到已购买的召回引擎版实例,在操作栏中点击 管理

image.png

左侧导航栏找到 表管理添加表

image.png

完成表的基础信息填写后,点击 下一步 。

image.png

  • 表名称:字母、数字或下划线组成,最大25字符。

  • 数据分片数:分片数设置时,请填写不超过256的正整数, 用于提升全量构建速度、单次查询性能。(部分存量实例,仍需各索引表分片数保持一致,或至少一个索引表分片数为1,其余索引表分片数一致)

  • 数据更新资源数:数据更新所用资源数,每个索引默认免费提供248G的更新资源,超出免费额度的资源将产生费用,详情可参考召回引擎版计费概述

2. 数据同步

全量数据源 选择「对象存储OSS+API」,并完成其他项的配置,数据来源校验 校验通过后,点击 下一步

image.png

配置说明:

  • OSS路径:访问OSS文件的路径,需以/开头,路径中不允许包含?、=、&符号,文件不能放在根目录,需放在某个文件夹下然后填写路径。

  • OSS存储空间(Bucket):OSSBucket名称。

image.png

3. 索引结构

字段索引进行设置,配置完成后,点击下一步。

image.png

image.png

  • 配置说明:

    • 字段设置:

      • 属性字段:可以选择是否压缩,默认为不压缩,选择file_compressor表示开启压缩。

      • 数据压缩:字段内容的压缩,通过去重等方式实现数据压缩,字段内容可以选择是否压缩,默认为不压缩,默认多值和STRING类型选择uniq,单值数值类型是equal。

      • 设置说明:

        1. 如果开启了属性压缩,建议前往「集群管理-节点状态-表加载策略」编辑索引加载方式,以此降低对性能的影响。

        2. 配置分析方式的字段类型必须为TEXT类型。

        3. 支持复制字段操作,复制出的新字段(DUP字段)与原字段内容保持一致(推送不一致内容时,将采用原字段内容覆盖),如期望字段内容不一致,请手动删除DUP字段高级配置中的copy from配置

        4. 当数据中缺少字段或字段为空时,系统将自动补充默认值,数字类型默认补0,STRING类型默认补空字符串,支持自定义默认值

    • 索引设置:给需要进行索引检索的字段配置对应的索引。

4. 确认创建

点击确认创建后,系统将自动创建配置好的表。

image.png