核心功能
Typesense 是用 C++ 编写的开源搜索引擎,服务端以 GPL v3 发布。它是单一二进制、无运行时依赖,指定 --data-dir 与 --api-key 后在 8108 端口提供 REST 接口。数据按 collection 组织并需声明字段类型,查询用 query_by 指定字段。
功能亮点
结构化集合
建 collection 先声明字段类型,查询用 query_by 指定
零依赖部署
一条 docker run 命令即可起服务,/health 返回 ok
排序可控
集合可设默认排序字段,查询时再用 sort_by 覆盖次序
集群与托管
多节点用 Raft 组高可用集群,托管版按每集群每小时 $0.03 计费
适用场景
• 电商与内容站点的即输即搜
• 文档站搜索,替代托管搜索服务
• 数据需自持的站内检索场景
• 按地理位置过滤和排序的检索
安装配置
bash
Docker: export TYPESENSE_API_KEY=xyz mkdir "$(pwd)"/typesense-data docker run -p 8108:8108 -v"$(pwd)"/typesense-data:/data typesense/typesense:30.2 --data-dir /data --api-key=$TYPESENSE_API_KEY --enable-cors macOS(Homebrew,需 Ventura 13 及以上): brew install typesense/tap/typesense-server@30.2 brew services start typesense-server@30.2 Ubuntu / Debian(DEB 包,需 Ubuntu 20 及以上): curl -O https://dl.typesense.org/releases/30.2/typesense-server-30.2-amd64.deb sudo apt install ./typesense-server-30.2-amd64.deb sudo systemctl start typesense-server.service 健康检查: curl http://localhost:8108/health 托管版:在 https://cloud.typesense.org 用 GitHub 登录,选配置启动集群后生成 API Key。
使用方法
bash
设置连接信息:
export TYPESENSE_API_KEY='xyz'
export TYPESENSE_HOST='http://localhost:8108'
创建 collection:
curl "${TYPESENSE_HOST}/collections" -X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" -d '{
"name": "books",
"fields": [
{"name": "title", "type": "string"},
{"name": "authors", "type": "string[]", "facet": true},
{"name": "publication_year", "type": "int32", "facet": true},
{"name": "ratings_count", "type": "int32"},
{"name": "average_rating", "type": "float"}
],
"default_sorting_field": "ratings_count"
}'
批量导入 JSONL 文档:
curl "${TYPESENSE_HOST}/collections/books/documents/import" -X POST \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
--data-binary @/tmp/books.jsonl
搜索:
curl -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
"${TYPESENSE_HOST}/collections/books/documents/search?q=harry+potter&query_by=title&sort_by=ratings_count:desc"关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标Typesense
价格免费
开源是
上手难度入门
相关工具
优点
- 服务端是单一二进制且无运行时依赖,一条 docker run 就能起完整服务
- collection 需显式声明字段类型与 facet,索引结构清晰、查询行为可预期
- 查询用 query_by 精确指定搜索字段,配 sort_by 与 default_sorting_field 控排序
- Typesense Cloud 按每集群每小时 $0.03 计费,且不限记录数与操作次数
缺点
- 服务端采用 GPL v3,若改动源码并对外提供服务,合规边界需要自行评估
- 建 collection 必须先定义字段与类型,schema 变更不如动态映射那样随意
- 搜索请求必须带 query_by,漏写就查不出结果,和默认全字段检索的习惯不同
- macOS 原生二进制只支持 Ventura 13 及以上,更老的系统只能改用 Docker
- Typesense Cloud 免费额度仅首 720 小时集群与 10GB 出网流量,之后按量付费