开通OSS服务
添加OSS数据源
进入OpenSearch控制台,在左上角切换到OpenSearch-召回引擎版,在实例管理页面对应的列表中找到所属实例,点击操作栏中的管理:
配置数据源。
在左侧导航栏,选择配置中心>数据源,点击添加数据源,选择对象存储OSS,输入数据源名称,OSS路径,存储空间,然后点击校验即可:
参数说明:
数据源名称:可自定义数据源名称(需字母开头,支持字母数字下划线)
OSS路径:访问OSS文件的路径
存储空间(Bucket):OSS的Bucket名称
目录名必须包含opensearch,否则将无法读到数据,且不可包含 = & ?等特殊符号
OSS路径来源:在创建好的Bucket名称点击进入后-新建目录-选择创建好的目录路径,此处示例路径为/opensearch_index_data/:
存储空间(Bucket) :OSS的Bucket名称(来源:在开通的OSS服务Bucket里使用创建好的Bucket名称-如下图所示)
添加索引表:
OSS数据源创建好后,在配置中心>索引结构添加索引表
配置索引表,索引表名称可自定义,数据源选择配置好的OSS数据源:
案例中配置了2个字段pk、embeddings,样例数据可参考(样本数据:oss_test.txt)
CMD=add
pk=999000
embeddings=0.00.0039257140.0098142860.0039257140.00
pk=999000
embeddings=0.00.0039257140
HA schema的数据格式可参考下方HA文件格式。
索引重建,在运维中心>运维管理>索引重建页面中触发索引重建:
索引重建完成后,即可进行查询测试。
HA文件格式
文件是建立索引的数据源(注意:需要是utf-8的编码),有着固定的格式,下面介绍标准的输入格式。
首先看一个完整的数据文件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^_
可以看到上面的数据文件中总共有两个命令,分别是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 |
命令格式定义
Add command format
add命令表示往索引中增加新的内容。
add命令第一行必须为CMD=add,后面是该文档的field,field顺序可以与schema中fields顺序一致,所有出现的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^_
^^
Delete command format
delete命令表示从索引中删除指定的内容。
delete命令第一"行"必须为CMD=delete,接下来的"行"为index schema中定义属性为primary key 的field,以及用于
partition hash的field,如果两个field相同,则只需要出现一个field。
CMD=delete^_
PK=12345321^_
^^CMD=delete^_
PK=12345321^_
^^
删除OSS数据源
在数据源配置页面,找到需要删除的数据源,点击删除即可:
注意:
数据源删除后将无法恢复,请谨慎操作:
如果OSS数据源已经配置了索引表,需先删除索引表,才能删除该OSS数据源。
注意事项
开通的OSS服务,需要和已购买的OpenSearch服务在同一个地域
召回引擎版不支持无地域属性的OSS的bucket
执行新增OSS数据源操作时,将会自动创建一个服务关联角色(如已经创建,则不会重复创建)AliyunServiceRoleForSearchEngine,开放搜索使用此角色来访问您在其他云产品中的资源已完成相应功能。