OpenSearch 最佳实践

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: OpenSearch 最佳实践 OpenSearch : 是一款结构化数据搜索托管服务,为移动应用开发者和网站站长提供简单、高效、稳定、低成本(?)和可扩展的搜索解决方案。 低成本:相对“低成本”,当文档数量到了一定量级后,实例租用等费用也不便宜。

OpenSearch 最佳实践

OpenSearch : 是一款结构化数据搜索托管服务,为移动应用开发者和网站站长提供简单、高效、稳定、低成本(?)和可扩展的搜索解决方案。

低成本:相对“低成本”,当文档数量到了一定量级后,实例租用等费用也不便宜。。。。大家从自身业务能力及成本综合考虑,到底要不要上opensearch还是另走他法

OpenSearch的产品架构在官方文档处可以查阅

https://help.aliyun.com/document_detail/29108.html?spm=5176.doc29104.6.540.0YyjoL

今天我们不谈架构层面的问题,单从使用者的角度来和大家分享下使用OpenSearch的一些值得注意的点,忝为最佳实践:)

前提

假设你已经接触过opensearch, 有了一定的opensearch的概念及使用基础,那么这篇分享很适合你

版本的选择

opensearch有2个版本应用可创建,大家应根据业务场景进行选择

标准版 做搜索加速,实时,仅支持单表,不支持下拉提示,部分区域不支持标准版。

高级版 多表联合检索,且对实时性要求不是非常高(以我们的使用情形看,阿里云保证的准实时还是有保障的)

主表与附表

当用到高级版opensearch并且需要多表联合检索时,其中一个很重要的概念就是主表与附表,按照官方解释:主表与附表仅支持 N : 1的关系,打个比方,如果主表是商品,附表是商铺,那么多个商品可以属于一个商铺,但是反过来却不行;那么在业务开发中,如何更加快速的确定哪个表是主表呢?我的常用做法是:

假设有表A、B、C,A与B通过字段x_id关联;A与C通过y_id关联;那么基本可以确定A作为主表,验证的方法是,假定A中有一条记录rowA,通过这条记录的x_id能不能找到唯一的一条B记录,通过y_id能不能找到唯一的一条C记录,如果均可以,那么,A即主表

明确了主附表后,我们定义完应用结构后,可以看一看是否设置正确,所有表是否都关联上了。如下图:灰色底的表为主表,白色底的表为附表

1

分词方式的选择

opensearch中另一个很重要的概念就是分词,分词方式决定了你检索时opensearch如何召回文档。目前常用的中文分词为模糊分词与中文基础分词。

模糊分词: 仅支持short_text类型, 支持拼音、前后缀、单数字、单字母方式检索,召回量大,因此性能有损失。如果文档量非常大,建议慎用。

基础分词:适合语义化的场景搜索,比较适合文档的标题,正文检索。

数据源

创建好应用结构后,需要选择数据源,告诉opensearch从哪获取数据进行文档的索引重建。这里有个小tip,如果在创建应用结构时,字段名与数据源中的字段名一致,那么选择好rds或者odps后,opensearch可以自动映射好各个字段。

在创建应用时,建议事先多想想需要哪些字段;否则,后期重新添加字段,修改数据源并重建索引的话,往往耗时较久

下拉提示

opensearch一个很方便的功能就是下拉提示,下拉提示的索引重建是不支持增量数据的,而且后台没有提供明显的入口让用户去重建下拉提示的索引,那么当业务经过一段时间的发展,需要重建下拉提示索引,如何做呢?有个方法就是在如图处,叉掉之前的来源字段,然后重新选择一下这个字段,点击保存,然后你就会发现“生效下拉提示”这个按钮可以点了,点击即可重建下拉提示的索引。(不知道是阿里云遗留的bug还是故意做的不明显。。。)ps: 重建下拉提示索引是不收费的:)

2

粗排精排

这个在官方文档里有比较详细的解释,这里就不赘述了。只说一点,粗排尽量选择筛选性好的字段或者方法,如果召回的文档依旧非常多,那么可以将条件放在filter字句中,提高检索效率;否则容易遇到检索超时的错误。

常见问题

  1. 配额的问题:

以实际业务来说,opensearch在配额使用率达到80%时会报一次警,此后就再无报警;如果运维人员或者开发人员疏忽没有注意到报警,那么在配额耗尽时,opensearch更新文档会直接失败,导致搜索结果不准确。而且这个失败也不会触发报警,除非人为去查看错误日志。。。

因此在业务迅速发展时期,应当定期查看opensearch的配额,购买配额时还需注意,要稍微多购买一点,略微大于主附表的有效数据容量和,否则在重建索引时也有可能遇到空间不足的错误而失败。个人猜测是重建索引时的中间文件或者临时文件会额外占据一些空间,因此配额要稍大一点

  1. 排序不符合业务需求的问题

这个建议多查阅官方文档,熟悉每种排序方法的使用场景,并进行合理的搭配使用。实际使用中,粗排与精排可能会需要较长的时间去不断调整反馈,耐心与科学的排序方法需兼顾,当然了,也可以咨询阿里云的技术专家:)

相关实践学习
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
目录
相关文章
|
6月前
|
分布式计算 搜索推荐 MaxCompute
基于OpenSearch向量检索版的多主体识别最佳实践
本文将介绍如何通过OpenSearch向量检索版,在图像搜索服务中进行多主体识别。
136240 9
|
6月前
|
自然语言处理 分布式计算 算法
通过OpenSearch向量检索版进行混合检索的最佳实践
本文介绍如何通过OpenSearch向量检索版,使用稀疏-稠密向量进行混合检索,获得更好的搜索效果。
1624 0
|
存储 分布式计算 搜索推荐
OpenSearch图搜图、文搜图向量检索最佳实践
本文介绍如何通过OpenSearch【向量检索版】帮助企业在没有向量数据的情况下快速搭建图像搜索服务,解决图片向量化、向量搜索等检索难题,实现以图搜图、以文搜图等多种图像检索能力。并通过数据压缩功能,降低存储空间,降低业务成本,为企业提供效果、性能双保障。
3118 3
|
自然语言处理 分布式计算 Java
基于OpenSearch向量检索版和智能问答版搭建企业专属对话搜索系统
本文将介绍如何使用OpenSearch向量检索版和智能问答版,搭建灵活自定义的企业专属对话搜索系统。
1984 1
|
人工智能 自然语言处理 搜索推荐
阿里云开放搜索重磅发布!云时代搜索业务的价值重构
【云栖大会】阿里云开放搜索重磅发布~
6884 0
阿里云开放搜索重磅发布!云时代搜索业务的价值重构
|
6月前
|
SQL 监控 搜索推荐
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择
446 2
|
Web App开发 自然语言处理 搜索推荐
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
584 0
|
6月前
|
自然语言处理 搜索推荐 开发者
OpenSearch 智能问答实验室上线,支持免费体验对话式问答搜索
本文介绍OpenSearch 智能问答实验室上线的场景功能体验。
1219 0
|
存储 数据采集 人工智能
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
阿里云OpenSearch再推面向企业开发者的PaaS方案:基于OpenSearch向量检索版,为企业开发者提供性能表现优秀、性价比优异的向量检索服务,并提供与大模型结合脚本工具,用户可在使用能力可靠的向量检索服务的同时,自由选择文档切片方案、向量化模型、大语言模型。
15798 1
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
|
自然语言处理 搜索推荐 算法
阿里云OpenSearch重磅推出LLM问答式搜索产品,助力企业高效构建对话式搜索服务
OpenSearch推出LLM智能问答版,面向行业搜索场景,提供企业专属问答搜索服务,基于内置的LLM大模型提供问答能力,一站式快速搭建问答搜索系统。
11991 7