PHP laravel scout opensearch

724 阅读4分钟

技术选型

最近项目中需要使用搜索功能,创业公司时间都很紧迫,于是乎快速的做了一些技术调研,了解了包括ElasticSearch在内的多个流行的解决方案,ElasticSearch是个很优秀的搜索引擎方案(大家有兴趣可以自行了解,这列不赘述),当我准备使用的时候发现ElasticSearch等分布式搜索引擎,需要多台服务器支撑,方便的是他们和阿里云合作之后可以直接在阿里云上面选择ElasticSearch.但是有一个问题是阿里云最少要2台服务器(而且还提示脑裂风险),而我们的项目现在还没有推广,完全是初级产品有待验证,因此这个服务器成本我还是要考虑的.而如果自己部署一台单机版的ElasticSearch 确实有风险.所以我又看了下其他的产品,发现了阿里云的opensearch.

opensearch概述

opensearch相关的介绍可以查看阿里云的文档:阿里云opensearch介绍. 我认为很适合中小创业公司前期,以及一些对搜索业务要求不高的项目使用,当然大家在选择的时候还是要多结合自己的产品业务发展阶段去选择.

具体使用中的感受

  1. 出色的协同配合,这可能是阿里云现在和其他云产品竞争中越来越强大的优势了,在使用opensearch的过程中我们不需要自己上传更新搜索库数据,不需要创建搜索字段索引,直接使用阿里云的RDS作为数据源,那是相当的方便,节省了一大部分开发时间
  2. 很快,至少我是这样感觉得,我们网站的搜索相当的流畅,无需顾忌服务器性能,无需关心高并发下对其他业务的影响
  3. 稳定,除去了自己部署服务器的风险,随着使用频率随时调整等级
  4. 更新数据方便,比如我增加了一个字段并且将数据全部修改,那我这个时候只需要重新建立索引,一键完成
  5. 排序规则很实用,至少在我目前的电商项目中排序方式,以及优先级,粗排,精排都很方便,不过要多看文档再去操作

具体的使用步骤

  1. 注册阿里云,启用openserach服务这些巴拉巴拉.....
  2. 创建一个搜索应用
    创建应用
  3. 填写应用的基本信息(我这里选择的是通过数据源创建,如果你使用了阿里云的数据库例如RDS,OOPS)
    基本信息
  4. 选择对应的数据源
  5. 选择了数据源创建项目之后就会提示连接数据库,输入相应信息
  6. 然后选择你要作为搜索索引以及内容相关的数据表
  7. 选择完表之后,我们需要编辑下表之间的关系,通过他们的id来建立联系,这个关系建立好之后,我们就可以搜索到相关的表中所有的数据了.不需要额外做其他工作

8. 建立好表之间的关系之后我们就可以对其进行进一步的编辑,其中可以编辑属性字段和展示字段,属性字段默认是int类型的字段用来做查询排序条件的,展示字段是用来最后给我们展示结果的,如果你的信息比较负责,也可以只返回表的id,然后我们自己的后台通过搜索到的id进行业务操作,获取想要的信息

9. 创建完毕之后我们需要回到开放搜索的首页-应用管理,可以看到我们刚刚创建好的应用,然后点击全量索引构建,这个很关键,我第一次的时候就不知道要点击这个....以为直接自动更新数据呢,等以后如果你的冲洗你添加了字段需要修改数据结构,然后再次点击全量索引构建 10. 后续php的结合使用等有空补上