全文索引搜索引擎Zinc

什么是 Zinc ?

ZincSearch 是一个搜索引擎,可用于文本数据、日志、指标、事件等。它允许您进行全文搜索,包括将服务器日志发送到 ZincSearch、推送您的应用程序数据、提供全文搜索或在您的应用程序中构建搜索栏。具备与 Elasticsearch API 的兼容性,因此您可以轻松迁移应用程序。

之前老苏折腾 Nettu Meet 时用到过 Elasticsearch7.1.0 版,性能消耗还好,折腾 Trudesk 时用到过 Elasticsearch8.0.0 版,基本上直接一启动就把我的小机器搞挂了

虽然 Elasticsearch 是一个非常好的产品,但它需要大量的资源,所以老苏找到了 Zinc,它是 Elasticsearch 的一个轻量级替代方案,运行时只需要使用最少的资源,Zinc使用 Bluge 作为底层索引库,采用 Go 语言编写,而 Elasticsearch 则是 Java 语言编写的

MeiliSearch 一样,似乎单独安装也并没有什么实际的用途 😂

命令行安装

官方的镜像发布在 :https://gallery.ecr.aws/zinclabs/zinc

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 新建文件夹 zinc 和 子目录
mkdir -p /volume2/docker/zinc/data

# 进入 zinc 目录
cd /volume2/docker/zinc

# 修改目录权限
chmod a+rwx ./data

# 运行容器
docker run -d \
--restart unless-stopped \
--name zinc \
-p 4080:4080 \
-v $(pwd)/data:/data \
-e ZINC_DATA_PATH="/data" \
-e ZINC_FIRST_ADMIN_USER=admin \
-e ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123 \
public.ecr.aws/zinclabs/zinc:0.3.6
可变
ZINC_DATA_PATH 指定缺省的 data 文件夹
ZINC_FIRST_ADMIN_USER ZincSearch 的第一个管理员用户
ZINC_FIRST_ADMIN_PASSWORD 第一个管理员用户的密码

更多的环境变量请查阅官方文档:https://docs.zinc.dev/environment-variables/

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'

services:
zinc:
image: public.ecr.aws/zinclabs/zinc:0.3.6
container_name: zinc
restart: unless-stopped
ports:
- 4080:4080
volumes:
- ./data:/data
environment:
- ZINC_DATA_PATH="/data"
- ZINC_FIRST_ADMIN_USER=admin
- ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 zinc 和 子目录
mkdir -p /volume2/docker/zinc/data

# 进入 zinc 目录
cd /volume2/docker/zinc

# 修改目录权限
chmod a+rwx ./data

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:4080 就能看到登录界面

用前面设置的 ZINC_FIRST_ADMIN_USERZINC_FIRST_ADMIN_PASSWORD 登录进入主界面

演示数据

SSH 客户端依次执行下面的命令

1
2
3
4
5
6
7
8
# 下载文件
curl -L https://github.com/zinclabs/zinc/releases/download/v0.1.1/olympics.ndjson.gz -o olympics.ndjson.gz

# 解压文件
gzip -d olympics.ndjson.gz

# 加载示例数据
curl http://192.168.0.197:4080/api/_bulk -i -u admin:Complexpass#123 --data-binary "@olympics.ndjson"

索引 中能找到刚刚导入的 olympics

搜索选择索引,勾选要查询的字段,并输入关键词就可以完成搜索了

参考文档

zinclabs/zinc: ZincSearch (Classic). A lightweight alternative to elasticsearch that requires minimal resources, written in Go.
地址:https://github.com/zinclabs/zinc

ZincSearch - A modern search engine
地址:https://zinc.dev/

ZincSearch
地址:https://docs.zinc.dev/

Zinc - A lightweight alternative to elasticsearch in Go : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/r7y585/zinc_a_lightweight_alternative_to_elasticsearch/