Fess 是开源企业级搜索服务器,基于 OpenSearch 构建,支持全文检索、分面搜索、RAG 和语义搜索。内置 Web/文件/数据库爬虫,支持 Confluence/Jira/Slack 等 20+ 数据源,单机 Docker 部署,Apache 2.0 开源,1.1k Stars。
🎤 引言
公司内部文档、产品手册、Confluence、Jira、Slack……全散落在各处,新人入职想找个东西得问遍整个公司。
商业搜索方案(Elastic Cloud、Google Search Appliance)贵得要死,Elasticsearch 搭搜索集群光运维就累死人。有什么更轻量的选择?
Fess 就是——开源企业级搜索服务器,1.1k Stars,基于 OpenSearch,内置爬虫把各种数据源一键抓取建索引,支持全文检索、分面搜索、RAG 语义搜索,打包成 Docker 一键跑起来,Apache 2.0 完全免费。
⭐ 核心功能
1. 全文检索 + 分面搜索
- 基于 OpenSearch,支持分词、排序、搜索建议(suggest)
- 分面导航(faceting):按文件类型、日期、标签过滤结果
- 高亮匹配词、相关性排序、布尔查询
2. 多数据源爬虫
Fess 内置爬虫支持抓取以下数据源:
| 类型 | 支持的数据源 |
|---|---|
| Web | 任何公开网站(可配置爬取深度/规则) |
| 文件系统 | 本地文件、SMB、NFS、FTP、S3 |
| 数据库 | MySQL、PostgreSQL、Oracle、SQL Server |
| 办公文档 | Microsoft Office、PDF、ZIP 压缩包 |
| 云存储 | S3、Google Drive、Box、Dropbox |
| 协作工具 | Confluence、Jira、SharePoint、Office 365、Slack |
| 开发工具 | Git、GitBucket、GitHub、GitLab |
爬取后自动建索引,支持增量爬取和定时调度。
3. AI / RAG 和语义搜索
- 语义搜索:基于 embedding 向量检索,不只是关键词匹配
- RAG 支持:可以接 LangChain 等 LLM 工具链,做检索增强生成
- 多语言分析:内置 20+ 语言的分词器和 analyzer
4. 权限和访问控制
- 角色权限:搜索结果按用户角色过滤,普通员工搜不到内部敏感文档
- SSO 支持:LDAP、OpenID Connect、SAML、SPNEGO、Microsoft Entra ID
- 单点登录:接完公司 IdP 后员工直接登录,不用另起账号
5. REST API + 插件扩展
- 标准 REST API(
/api/v1/search等),可被任何应用调用 - 主题插件:上传 ZIP 自定义搜索 UI 外观
- 数据源插件:社区贡献的连接器(Atlassian、Salesforce 等)
- 脚本插件:Groovy / OGNL 自定义索引和查询逻辑
6. 浏览器管理界面
- 搜索 UI:
http://localhost:8080/ - 管理后台:
http://localhost:8080/admin/(默认账号 admin/admin) - 全程浏览器操作,不需要改配置文件
📥 安装与使用
Docker 一键部署(最简单)
git clone https://github.com/codelibs/docker-fess.git
cd docker-fess/compose
docker compose up -d
# 搜索界面: http://localhost:8080/
# 管理后台: http://localhost:8080/admin/下载安装包(Java 21+)
# 下载最新版本
wget https://github.com/codelibs/fess/releases/download/fess-15.7.0/fess-15.7.0.zip
unzip fess-15.7.0.zip
cd fess-15.7.0
# 启动(需要先装好 OpenSearch)
./bin/fess
# 或用内置 OpenSearch 一起跑
docker compose -f compose/full/docker-compose.yml up -d配置爬取任务(浏览器操作)
- 打开
http://localhost:8080/admin/,用 admin/admin 登录 - Web 爬取:「Web」→ 新建配置 → 填入目标 URL 和爬取规则
- 文件爬取:「File」→ 配置路径(如
/data/docs) - 数据库爬取:「Data Store」→ 填 JDBC 连接串和 SQL
- 启动调度:「Scheduler」→ 新建 job → 设置 cron 表达式(如
0 0 * * *每小时爬一次) - 等待爬取完成,在搜索框里搜关键词即可
REST API 调用示例
# 搜索
curl "http://localhost:8080/api/v1/search?q=kubernetes&format=json"
# 获取健康状态
curl "http://localhost:8080/api/v1/health"接 RAG(LangChain)
from langchain_community.retrievers import FessSearchRetriever
retriever = FessSearchRetriever(
fess_url="http://localhost:8080",
engine_name="fess",
top_k=5
)
docs = retriever.get_relevant_documents("如何配置 Kubernetes Ingress")🎯 适用场景
- 企业内部知识库搜索:把 Confluence、文档服务器、内部系统全部索引,新人搜资料不用到处问
- 政务/教育网站站内搜索:替代 Google Site Search,部署在自己服务器,数据不出墙
- 技术文档网站搜索:接 Docusaurus、MkDocs 等静态站,支持全文检索
- RAG 知识库:接 LangChain/LlamaIndex 做私有知识库的检索层,配合 LLM 实现问答
- 多数据源统一检索:把分散在 S3、Jira、Slack 的内容汇聚到一个搜索入口
🔍 对比/替代方案
| 工具 | Stars | 部署难度 | 数据源 | AI/RAG | 许可证 |
|---|---|---|---|---|---|
| Fess | 1.1k | ⭐ 简单 | 20+ | ✅ | Apache 2.0 |
| Elasticsearch | 70k+ | ⭐⭐⭐ 复杂 | 需自搭 | 需自配 | SSPL/Elastic |
| Meilisearch | 42k | ⭐⭐ 简单 | 仅文件 | ❌ | MIT |
| Typesense | 20k | ⭐⭐ 简单 | 仅文件 | ❌ | GPL 3 |
| Solr | 1k+ | ⭐⭐⭐ 复杂 | 需自配 | 需自配 | Apache 2.0 |
| Algolia | - | ⭐ 简单 | API 推送 | ❌ | 商业付费 |
Fess 的核心优势:
- 内置爬虫是最大亮点,Elasticsearch/Solr 都要自己配 Logstash/Filebeat
- 开箱即用的管理 UI,不需要写代码配置
- SSO/LDAP 原生支持,企业内用不需要新建账号
- RAG 支持,接 LLM 比纯搜索方案更简单
Fess 的短板:
- Stars 相对少(1.1k),社区规模有限
- 依赖 OpenSearch(额外组件),比 Meilisearch/Typesense 重的多
- 移动端 UI 体验一般
⚠️ 注意事项
- Java 21 是硬性要求:旧版 Java 跑不起来,确认服务器上装了 JDK 21+。
- OpenSearch 内存占用:Fess 背后跑 OpenSearch,JVM 建议给 4GB+ 内存,生产环境不要低于 8GB。
- 爬虫robots.txt:默认遵守网站的 robots.txt 规则,需要抓取禁止爬取的内容要单独配置(确认有授权)。
- 权限模型要设计好:Fess 的角色过滤依赖字段权限,配置不当可能导致搜索结果泄露。
- 中文分词需要配置:默认 analyzer 对中文支持一般,建议按文档配置
ja_text或 IK 等中文分词器。 - 升级要谨慎:大版本升级(如 14.x → 15.x)建议先在测试环境跑,Fess 配置项多,容易踩到 breaking change。
- 并发搜索性能有限:Fess 更适合中小企业(GB 级数据),超大规模(TB 级 + 高并发)建议还是用 Elasticsearch 集群。
✅ 总结
Fess 是中小企业快速搭建企业搜索的最佳选择:
- ✅ 安装极简:Docker 一键跑,不需要写一行代码
- ✅ 数据源全:20+ 内置连接器,覆盖大多数企业场景
- ✅ SSO 支持:LDAP/OIDC/SAML,企业身份无缝接入
- ✅ RAG 友好:接 LLM 做知识库问答比纯搜索更实用
- ❌ 性能上限有限:超大规模场景不如 Elasticsearch
- ❌ UI 美观度一般:功能导向,界面偏工程化
推荐指数:⭐⭐⭐⭐(4/5),适合想快速解决"资料散落各处找不到"痛点的中小企业和团队。
GitHub:github.com/codelibs/fess | 官网:fess.codelibs.org