概述
Fess 将数据保存在 OpenSearch 中。 search_engine.type 用于告知 Fess 所连接的 OpenSearch 是哪一种类型,Fess 创建的索引定义和可用的功能都由它决定。
默认值 default 以安装了 CodeLibs 的 4 个插件( opensearch-analysis-fess 、 opensearch-analysis-extension 、 opensearch-minhash 、 opensearch-configsync )的 OpenSearch 为前提(请参阅 选择安装方法 )。如果要连接到不含这些插件的原生 OpenSearch(例如无法自行安装插件的托管服务),请指定 vanilla 。
类型
| 值 | 说明 |
|---|---|
default | 安装了 CodeLibs 插件的 OpenSearch。默认值。 |
vanilla | 不含 CodeLibs 插件的原生 OpenSearch。15.9 新增。索引定义从 fess_indices/_vanilla/ 读取。Fess 15.8 及更早版本无法识别该值,请在这些版本中指定 cloud 。 |
aws | 与 vanilla 相同,用于 Amazon OpenSearch Service(请参阅 Amazon OpenSearch Service )。 |
cloud | vanilla 的已弃用别名。启动时会在日志中输出警告。请改为 vanilla 。 |
| 其他值 | 与 default 同样处理。但 fess_indices/_<类型>/ 中的定义文件优先于 fess_indices/ 中的同名文件。 |
Fess 不会自动判断是否安装了插件,需要由用户指定类型。请在首次启动之前设置。索引定义是在创建索引时应用的,因此之后更改该值也不会改变已经创建的索引。
没有插件时无法使用的功能
使用 vanilla 和 aws (包括已弃用的 cloud )时,无法使用以下功能。依赖这些功能的管理界面项目不会显示。
字典管理:不显示 [系统 > 字典]。字典管理页面和字典管理 API(
/api/admin/dict/)也无法使用。维护页面中的“重置字典”和“重新加载文档索引”同样不会显示。Analyzer 使用索引定义中包含的规则,而不是字典文件。折叠重复的搜索结果:“常规”中的“折叠重复结果”不会显示,并且始终为禁用状态。
重复文档检测:不会计算用于查找内容相同的文档的内容签名。文档报告的“重复文档”选项卡不会显示(“休眠文档”仍可使用)。用于查找相似文档的搜索参数
sdh会被忽略。Analyzer:日语、韩语和简体中文不使用 CodeLibs 的分词器,而是使用 OpenSearch 标准的 Kuromoji、Nori 和 SmartCN Analyzer 进行切分,因此切分结果与
default不同。越南语(*_vi字段)和繁体中文(*_zh-tw字段)使用不登记任何词语的空 Analyzer。这些语言的文档仍会登记到与语言无关的content字段和title字段中。
所需的 OpenSearch 插件
vanilla 和 aws 的索引定义使用 OpenSearch 官方插件提供的 Analyzer 和向量字段类型。所连接的 OpenSearch 需要安装以下插件。
analysis-kuromojianalysis-norianalysis-smartcnopensearch-knn(k-NN)
不需要 CodeLibs 的插件。对于自行运维的 OpenSearch,请使用 opensearch-plugin install 安装,例如 bin/opensearch-plugin install analysis-nori 。关于 Amazon OpenSearch Service,请参阅 Amazon OpenSearch Service 。
当类型为 vanilla 或 aws 时,Fess 会在启动时列出已安装的插件( GET /_cat/plugins )。只要缺少上述插件中的任何一个,就会在日志中输出一条指出缺少哪些插件的警告,并继续启动。如果因服务不允许该 API 等原因导致请求失败,则跳过检查。
设置类型
Docker
在 compose.yaml 的 fess01 服务中指定环境变量 SEARCH_ENGINE_TYPE 。
vanilla 可用于 Fess 15.9 及更高版本的镜像。使用更早的镜像时,请指定 SEARCH_ENGINE_TYPE=cloud 。其他 Docker 设置请参阅 使用 Docker 安装(详细) 。
Note
在 Fess 15.8 的镜像中,只有 -noble 版本(例如 ghcr.io/codelibs/fess:15.8.0-noble )会把 SEARCH_ENGINE_TYPE 传递给 Fess 。默认的(基于 Alpine 的)15.8 镜像虽然会把该值写入 /etc/default/fess ,但不会以 -Dfess.config.search_engine.type 的形式传递给 JVM,因此该设置不会生效。从 15.9 起,默认镜像也会生效。
非 Docker 环境
bin/fess.in.sh 不会读取 SEARCH_ENGINE_TYPE 。请使用以下任一方法指定。
在
fess_config.properties中写入search_engine.type(ZIP 版为app/WEB-INF/classes/fess_config.properties,RPM/DEB 版为/etc/fess/fess_config.properties)。在 ZIP 版的
bin/fess.in.sh(Windows 为bin\fess.in.bat)中,向FESS_JAVA_OPTS追加 JVM 选项。
更改后请重启 Fess 。爬虫等作业进程会从 Fess 继承该设置,因此无需单独指定。
连接设置
与 OpenSearch 的连接,其设置方法与其他类型相同。
| 设置 | 说明 |
|---|---|
search_engine.http.url | OpenSearch 的 HTTP 端点。如果指定了环境变量 SEARCH_ENGINE_HTTP_URL ,则以该环境变量为准。 |
search_engine.username / search_engine.password | HTTP Basic 认证的用户名和密码。仅在两者都指定时才会使用。在 Docker 中,通过环境变量 SEARCH_ENGINE_USERNAME 和 SEARCH_ENGINE_PASSWORD 指定。 |
search_engine.http.ssl.certificate_authorities | 用于验证 HTTPS 端点的服务器证书的 CA 证书文件(X.509)的路径。如果证书由 Java 默认信任的 CA 签发,则不需要。 |
fess_config.properties 的项目也可以在 FESS_JAVA_OPTS 中以 -Dfess.config.<项目名> 的形式指定来覆盖(请参阅 使用 Docker 安装(详细) )。
Amazon OpenSearch Service
使用 Amazon OpenSearch Service 的域时,请将 search_engine.type 指定为 aws ( vanilla 的行为相同)。
前提条件
域的 OpenSearch 为 3.x。Fess 会在启动时检查引擎,如果不是 OpenSearch 3 则不会启动。
“所需的 OpenSearch 插件”中列出的插件可在该域中使用。在 Amazon OpenSearch Service 中,Nori 是可选软件包,请在启动 Fess 之前将其关联到该域。
端点使用 HTTPS。
已启用细粒度访问控制(fine-grained access control),并创建了供 Fess 登录的内部用户(HTTP Basic 认证)。目前尚不支持使用 AWS IAM 凭证对请求签名(SigV4),因此无法使用只接受 IAM 签名请求的域。
配置示例
启动时的检查
类型为
aws时,同样会执行“所需的 OpenSearch 插件”中说明的插件检查。如果忘记关联 Nori,fess.log中会输出警告。如果域以 HTTP 401 或 403 拒绝请求,Fess 会在日志中输出警告。因此导致启动失败时,错误消息中会提示检查用户名、密码和域的访问策略。
DNS 缓存的 TTL
托管服务的端点可能会随时间解析为不同的 IP 地址,而 JVM 会缓存 DNS 的解析结果。将缓存时间设置得较短,Fess 就能跟上地址的变化。请在以下两处指定 -Dsun.net.inetaddr.ttl=5 (单位为秒)。
Fess 主体:追加到
FESS_JAVA_OPTS中。作业进程:爬虫、建议、分块和缩略图进程由 Fess 作为独立的 JVM 启动,不会继承
FESS_JAVA_OPTS。请在fess_config.properties的jvm.crawler.options、jvm.suggest.options、jvm.chunk.options和jvm.thumbnail.options末尾追加相同的选项。这些值每行写一个选项,每行以\n\结尾。请在现有各行之后追加该行,其余 3 个项目也同样处理。
在 Docker 中,请通过 Compose 文件的环境变量指定 FESS_JAVA_OPTS 。要更改 jvm.*.options ,请挂载修改后的 fess_config.properties (请参阅 使用 Docker 安装(详细) )。