部署 Typesense
快速容错搜索,地理搜索、分面和多租户。
平台进阶
为什么
Typesense 是开源搜索引擎,容错、地理搜索、分面和多租户集合。C++ 速度,单二进制,易自托管。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
电商搜索、地理搜索和多租户 SaaS 用 Typesense。日志分析避免。
如何做
1. Docker — typesense/typesense:26.0
2. 配置 — TYPESENSE_API_KEY 认证
3. 集合 — 配 schema 创建
4. 索引 — 加文档到集合
5. 搜索 — GET /collections/:name/documents/search
6. 地理 — geopoint 字段 + 地理过滤
7. 多租户 — 每租户独立集合
示例
# docker-compose.yml
services:
typesense:
image: typesense/typesense:26.0
environment:
TYPESENSE_API_KEY: xyz
TYPESENSE_DATA_DIR: /data
ports: ["8108:8108"]
volumes: [tsdata:/data]
volumes: { tsdata: }
# 创建集合和搜索
curl -X POST localhost:8108/collections -H 'X-TYPESENSE-API-KEY: xyz' -d '{
"name": "places", "fields": [
{ "name": "name", "type": "string" },
{ "name": "location", "type": "geopoint" }
]
}'
curl 'localhost:8108/collections/places/documents/search?q=cafe&query_by=name' -H 'X-TYPESENSE-API-KEY: xyz'
常见问题
- ⚠无 API key — Typesense 无 TYPESENSE_API_KEY 拒绝启动
- ⚠集合 schema 不可变 — 创建后无法改字段类型,重建
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓多租户用独立集合 — 更好隔离和性能
- ✓基于位置用地理搜索 — Typesense 地理支持优秀
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求