Typesense配置
在 fecify中进行typesense的配置,您需要先安装好typesense,然后才能进行相关的配置
typesense配置
店铺添加搜索引擎插件后,您在商家端后台,进入搜索引擎插件
1.状态关闭
- 如上图,将状态都关闭
- 因为typesese还没有配置,没有创建表结构,也没有同步数据。因此先进行关闭,等这些工作处理完成后在打开这些选项
2.配置:
- Host:默认一般是http,如果您配置了https,请选择https。后面是IP,如果您配置了域名,那么填写域名即可
- Port:端口,需要注意的是,您的服务器的端口一定要打开,可以外部访问。
- Api Key: 访问typesense的密码
配置完成后保存即可
创建搜索表结构
1.创建图搜索表
前台商城,搜索栏,如果您想要支持图片搜索,那么您需要创建图搜索表,点击按钮即可
2.创建商品搜索表
搜索引擎的文本搜索,不同的语言分词不同,因此,需要每个语言对应一张表
2.1选择语言
2.2选择规格属性
商品存在很多的规格属性,但您并不想将所有的规格属性都加入侧栏属性过滤(搜索页面和专辑页面,商品列表侧栏的属性过滤部分),您可以在这里勾选,譬如:勾选color,size
2.3选择附件属性
在使用之前,您需要先创建商品附加属性:Fecify 商品附加属性
创建后,即可在这里进行添加
2.4点击右上角的按钮:创建搜索表
,保存即可
2.5查看创建好的搜索表
您可以点击表结构按钮,查看typesense创建的表结构
2.6查看表数据
2.7表数据列表,点击查看详细
到这里,表结构就创建好了,表结构创建完成后,表结构是不可以编辑的。只能将搜索表删除,然后重新创建, 删除后,搜索表以及表数据将全部删除,您需要重新同步数据。因此,创建表结构,尽量一次性配好
另外,每个多语言,表结构需要一致,譬如:您已经创建了表结构,后来随着业务扩展需要增加一个语言,然后创建一个新的语言对应的搜索表,那么您的这个新语言的表结构 需要原来的一致(也就是创建搜索表,选择的规格属性和附加属性保持一致)
批量同步数据
表结构创建完成后,您就可以批量同步数据,在同步数据的过程中,不要编辑商品数据,同步完成后在编辑商品数据。
商品数据的同步,是task脚本,由于这个过程中需要下载图片,生成图片base64编码,传递给typesense(用于图片搜索),而且每个语言对应单独的搜索表, 因此语言越多,同步的次数越多,这个过程是比较慢的。
同步过程中,您可以在搜索表中查看商品的条数。
打开配置
当您表结构创建完成后,批量同步全部商品完成,您就可以打开插件了。打开插件意味着前台的搜索,专辑,将走typesense搜索引擎的逻辑,而不是mysql数据库/
打开选项,进行保存。然后刷新系统缓存,cloudflare缓存,然后去前台商城查看具体效果。
到这里就完成了。
允许IP访问
对于8108端口对外开放,您只允许特定IP请求,您可以使用iptables做限制
- 使用防火墙
配置服务器的防火墙(如 iptables、ufw)只允许特定 IP 地址访问 Typesense 的端口(默认是 8108)。以下是一些基本的防火墙配置示例:
对于 iptables:
# 允许特定 IP 访问
iptables -A INPUT -p tcp -s YOUR_ALLOWED_IP --dport 8108 -j ACCEPT
# 拒绝其他所有访问
iptables -A INPUT -p tcp --dport 8108 -j DROP
对于 ufw:
sudo ufw allow from YOUR_ALLOWED_IP to any port 8108
sudo ufw deny 8108
- 在代理层做限制
如果您的 Typesense 部署通过反向代理(如 Nginx)来实现,可以在 Nginx 中配置只允许特定 IP 访问 Typesense。示例如下:
server {
listen 80;
location / {
allow YOUR_ALLOWED_IP; # 允许的 IP 地址
deny all; # 拒绝所有其他访问
proxy_pass http://localhost:8108; # 注意:根据您的配置可能需要修改此行
}
}