前言-为什么需要Zincsearch
最近想给博客加上搜索功能,要求是效果好、资源占用小,手动[滑稽],作为一个喜欢折腾的人,就是想既要又要,这也是为什么我需要Zincsearch了
想起了之前做项目的时候,要想有一个效果比较好的检索功能,Elasticsearch基本算是标配了。但是之前用的是公司的服务器,对于资源这一块根本没太过在意,主打一个财大气粗。但是换成自己的轻量级服务器,就变得抠抠搜搜的了,于是去Elasticsearch官网看了一下推荐配置,这不看不知道,一看给我吓一跳,官方推荐配置:至少4核,32G,这不是要了老命嘛,于是不得不寻找高性价比平替了。
选型-为什么选zincsearch
选型阶段其实目标已经非常明确了,找了一下市面上稍有名气一点的搜索引擎:
Meilisearch
特性:
- 用Rust编写,速度快
- 官方提供docker部署方案
- 有比较不错的Web UI
- 有REST API
- 可以自动处理Typo
缺点:
- 不支持复杂聚合查询
推荐配置:
- CPU越多约好(官方没有给明确的数据)
- 内存为存储索引的2-3倍,也就是说,如果索引1G,那么需要2-3G的内存
- 存储推荐SSD,容量建议是原始数据的 10 倍
总结:一个还不错的搜索引擎,基本可以初期生产了,对于个人开发者来说能够够得上,用户友好,能用级别。
Zincsearch
特性:
- 用Go编写,编译后为单文件,方便部署
- 官方提供docker部署方案
- 有简陋的Web UI
- 有REST API
缺点:
- 不支持复杂聚合查询
- 集群能力弱
- 索引与搜索性能不稳定
- 并发查询能力差
推荐配置:
- 2CPU
- 4G内存
- SSD最好
总结:性价比超高,性能要求低于Meilisearch,对于个人开发这的小项目来说比较适合,可用级别。
Typesense
特性:
- C++编写
- 支持结构化搜索
- 支持向量搜索和混合搜索
推荐配置:
- 至少2vCPU
- 内存为存储索引的2-3倍,也就是说,如果索引1G,那么需要2-3G的内存
- SSD,容量至少为原始数据大小,建议使用 NVMe SSD 以降低延迟
总结:资源要求情况与Meilisearch差不多,适合有结构化搜索要求的场景,能用级别。
我还看了一下Lucene、OpenSearch,由于都是JAVA写的,直接放弃,这里就不对比了;还有Python写的Whoosh,由于属于试验阶段,也放弃了。
综上,我选择了Zincsearch,搜索效果还成,我也用不上那么复杂的搜索场景,关键是:资源占用小,性价比高。
如何安装Zincsearch
选型完成之后,就可以进入安装阶段了,这里选择使用docker安装,既方便又快速,而且还很干净。我的服务器为Ubuntu22.04, 安装前需要先安装docker,可以自行根据服务器版本来安装:
地址:https://docs.docker.com/get-started/get-docker/
我是用的docker compose安装的,这里也贴一下我的docker-compose.yaml:
services:
zincsearch:
image: public.ecr.aws/zinclabs/zincsearch:latest
environment:
- "ZINC_DATA_PATH=/data"
- "ZINC_FIRST_ADMIN_USER=admin"
- "ZINC_FIRST_ADMIN_PASSWORD=文字替换为密码"
container_name: "zincsearch"
restart: always
volumes:
- ./data:/data
ports:
- "4080"
在docker-compose.yaml所在的目录运行一下 docker compose up -d,服务就启动了
在浏览器运行http://localhost:4080/就可以看到登录界面了:

输入上面的用户名和密码即可登录了。
文章来自:https://apksilo.com