codelibs/fess · 上手攻略

  • 仓库:codelibs/fess
  • 链接:https://github.com/codelibs/fess
  • 分类:企业搜索 · 搜索服务器 · 知识管理
  • 作者:Jay
  • 更新:2026-08-30

这是什么

Fess 是一款开源的、自托管的企业级搜索服务器,基于 OpenSearch 构建。通过浏览器管理界面配置,无需深入了解 OpenSearch 本身。内置爬虫支持网站、文件系统、数据库等多种数据源,支持全文检索、分面搜索、搜索建议、权限过滤等企业级功能。

本质上是「开源版 Google Search Appliance / Elasticsearch Site Search」,让你在自有基础设施上快速搭一个企业内部搜索或公开网站搜索。

核心能力

  • 全文检索:支持分面(faceting)搜索、排序、搜索建议(autocomplete)
  • 多数据源爬虫:网站、文件系统、数据库(SaaS/云存储/本地数据库均可)
  • 多格式支持:Microsoft Office、PDF、ZIP 归档等常见办公格式
  • 浏览器管理界面:无需写代码,通过 Web UI 配置爬取目标、索引和搜索功能
  • REST API:程序化调用搜索接口,嵌入到现有系统
  • 权限过滤:基于角色和权限的搜索结果过滤,支持 LDAP、OIDC、SAML、SPNEGO、Microsoft Entra ID 单点登录
  • 多语言:支持 20+ 语言的分词和搜索 UI 本地化
  • 插件扩展:数据源插件(Confluence/Jira/Box/S3/Salesforce/SharePoint/Slack 等)、主题插件、日志插件

快速安装

方式一:下载安装包(推荐,Java 21+)

# Fess 15.8,从 Releases 页面下载 ZIP
unzip fess-15.8.x.zip
cd fess-15.8.x
./bin/fess

# 启动后访问:
#   搜索 UI:http://localhost:8080/
#   管理后台:http://localhost:8080/admin/  (默认账号 admin/admin)

⚠️ 安装前需确认已安装 Java 21 或更高版本。RPM/DEB 包安装方式同理,需提前安装 Java 21+。

方式二:Docker(最快)

# Fess Docker 镜像已发布在 ghcr.io
# docker-fess 仓库提供 docker-compose 一键启动
git clone https://github.com/codelibs/docker-fess.git
cd docker-fess/compose
docker-compose up -d

# 搜索 UI:http://localhost:8080/
# 管理后台:http://localhost:8080/admin/

⚠️ Docker 镜像已内置 OpenSearch,无需单独安装 OpenSearch。

配置爬取目标

登录管理后台(http://localhost:8080/admin/,账号 admin / admin):

网站爬取

  1. 进入 Web 爬虫配置 页面,添加目标网站 URL
  2. 设置爬取深度、URL 过滤规则(包含/排除正则)
  3. 调度器页面 配置定时爬取任务并启动

文件系统爬取

  1. 进入 文件爬虫配置 页面,添加目标目录路径
  2. 设置文件类型过滤(如只爬 .pdf.docx
  3. 启动调度器

数据库爬取(Data Store)

Fess 支持从以下数据源直接爬取(需安装对应数据源插件):

数据源类型 说明
数据库(DB) JDBC 连接的任意关系型数据库
CSV 导入 CSV 文件作为数据源
S3 爬取 Amazon S3 存储桶内容
SharePoint 爬取 SharePoint 文档库
Office 365 爬取 OneDrive / SharePoint Online
Salesforce 爬取 Salesforce 对象
Slack 爬取 Slack 频道消息
Elasticsearch 爬取已有 ES/OpenSearch 集群内容
Git 爬取 Git 仓库中的代码文件
Confluence / Jira 爬取 Atlassian 协作平台内容
Box / Dropbox 爬取云盘文件
Google Workspace 爬取 Google Drive 内容

REST API 使用

Fess 提供完整的 REST API,可程序化调用:

# 健康检查
curl -s "http://localhost:8080/api/v1/health"

# 搜索(默认 JSON 格式)
curl "http://localhost:8080/json/?q=关键词"

# XML 格式
curl "http://localhost:8080/xml/?q=关键词"

# 指定返回字段和分页
curl "http://localhost:8080/json/?q=关键词&num=10&start=0"

⚠️ 以上 API 路径基于 Fess 15.x 文档,具体的 API 端点格式(/json/ vs /api/v1/search)以实际部署版本的官方文档为准,建议启动后先查阅管理 UI 中的 API 文档页面。

搜索结果嵌入网站

<!-- 最简单的嵌入式搜索框 -->
<form action="http://localhost:8080/json/" method="get">
  <input type="text" name="q" placeholder="搜索..." />
  <button type="submit">搜索</button>
</form>

Fess 还提供专门的 Fess Site Search (FSS) 作为 Google Site Search 的免费替代方案,可直接嵌入网站。

典型使用场景

场景 说明
企业内网搜索 打通多个内部系统(Wiki/邮件/文档库/代码仓库),员工一框搜索全部
公开网站搜索 替代 Google Site Search / Algolia,自托管、无按查询收费
知识库检索 将散落在不同系统的文档集中索引,提供统一检索入口
文档归档检索 爬取历史文件服务器/网盘,建立可搜索档案
电商/内容平台搜索 将商品/内容数据库通过 Data Store 插件索引,提供带权限控制的搜索

坑与注意

  1. Java 21 是硬性要求:低于 Java 21 的运行环境无法启动 Fess 15.x;部分旧版 Fess(如 14.x)支持 Java 11/17,但功能较旧。
  2. OpenSearch 需单独安装(非 Docker):Docker 镜像内置 OpenSearch,但传统安装方式需要先搭好 OpenSearch 集群,再让 Fess 连接。具体版本兼容性见官方安装指南
  3. 数据源插件需单独安装:基础包不带所有数据源连接器(如 Salesforce/Confluence),需要在管理 UI 的插件页面中上传对应插件。
  4. 爬虫性能调优:大规模爬取时注意 OpenSearch 的 JVM 内存配置,默认值可能不够,建议根据数据量调整 opensearch.yml 中的 heap.size
  5. 中文分词:Fess 基于 OpenSearch,中文分词依赖 IK Analysis 等插件,Fess 本身未内置开箱即用的中文分词器,需在管理界面或配置文件中额外安装和配置。
  6. 安全加固:默认账号 admin/admin 为测试用途,生产环境必须立即修改密码并配置 HTTPS。

与同类对比

产品 与 Fess 的主要区别
Elasticsearch + 自建搜索 Elasticsearch 是通用搜索引擎,Fess 是开箱即用的企业搜索产品,无需写代码配爬虫和 UI
Algolia / Elastic Cloud(SaaS) Fess 完全自托管,无按查询收费;适合数据主权要求高、预算有限但有运维能力的团队
Google Search Appliance(已停售) Fess 可视为其开源替代品,功能覆盖范围相似
MeiliSearch MeiliSearch 更轻量,适合中小型项目;Fess 更适合需要多数据源爬虫、权限管理、企业 SSO 的大型场景
Apache Solr Solr 功能丰富但配置复杂;Fess 在保留企业搜索能力的同时大幅降低了上手门槛

一句话总结:Fess 是企业搜索的「交钥匙方案」—— 基于 OpenSearch 的成熟开源产品,浏览器配一配就能爬网站/文件/数据库,无需掌握搜索底层原理,适合搭建内部知识搜索或替代 Google Site Search。


⚠️ 声明:以上信息基于 2026-08-30 GitHub README 页面 web_fetch 获取。版本号(15.8)、API 端点格式、Java 版本要求以官方最新文档为准。生产环境使用请务必修改默认账号密码并启用 HTTPS。