索引管理
概述
Fess 处理的数据作为 OpenSearch 的索引管理。 搜索索引的备份和恢复对系统稳定运行必不可少。 本章节介绍索引的备份、恢复和迁移步骤。
索引构成
Fess 使用以下索引。
| 索引名 | 说明 |
|---|---|
fess.{日期} | 搜索对象文档的索引(每日创建) |
fess_log | 搜索日志和点击日志 |
fess_user | 用户信息 |
fess_config | 系统配置信息 |
configsync | 配置同步信息 |
索引备份和恢复
可以使用 OpenSearch 的快照功能执行索引的备份和恢复。
快照仓库配置
首先,配置保存备份数据的仓库。
文件系统仓库:
在 OpenSearch 的配置文件 (
config/opensearch.yml) 中添加仓库路径。
path.repo: ["/var/opensearch/backup"]
重启 OpenSearch。
注册仓库。
curl -X PUT "localhost:9201/_snapshot/fess_backup" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/var/opensearch/backup",
"compress": true
}
}'
Note
Fess 的默认配置中,OpenSearch 在 9201 端口启动。
AWS S3仓库:
将 S3 作为备份目标时,请安装并配置 repository-s3 插件。
curl -X PUT "localhost:9201/_snapshot/fess_s3_backup" -H 'Content-Type: application/json' -d'
{
"type": "s3",
"settings": {
"bucket": "my-fess-backup-bucket",
"region": "ap-northeast-1",
"base_path": "fess-snapshots"
}
}'
创建快照(备份)
备份所有索引
备份所有索引。
curl -X PUT "localhost:9201/_snapshot/fess_backup/snapshot_1?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": false
}'
备份特定索引
仅备份特定索引。
curl -X PUT "localhost:9201/_snapshot/fess_backup/snapshot_fess_only?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "fess.*,fess_config",
"ignore_unavailable": true,
"include_global_state": false
}'
定期自动备份
可以使用 cron 等定期执行备份。
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
curl -X PUT "localhost:9201/_snapshot/fess_backup/snapshot_${DATE}?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": false
}'
确认快照
确认创建的快照列表。
curl -X GET "localhost:9201/_snapshot/fess_backup/_all?pretty"
确认特定快照的详情。
curl -X GET "localhost:9201/_snapshot/fess_backup/snapshot_1?pretty"
从快照恢复
恢复所有索引
curl -X POST "localhost:9201/_snapshot/fess_backup/snapshot_1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": false
}'
恢复特定索引
curl -X POST "localhost:9201/_snapshot/fess_backup/snapshot_1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "fess.20250101",
"ignore_unavailable": true,
"include_global_state": false
}'
更改索引名恢复
恢复时也可以更改索引名。
curl -X POST "localhost:9201/_snapshot/fess_backup/snapshot_1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
"indices": "fess.20250101",
"rename_pattern": "fess.(.+)",
"rename_replacement": "restored_fess.$1",
"ignore_unavailable": true,
"include_global_state": false
}'
删除快照
可以删除旧快照以节省存储容量。
curl -X DELETE "localhost:9201/_snapshot/fess_backup/snapshot_1"
配置文件备份
除 OpenSearch 索引外,也请备份以下配置文件。
备份对象文件
| 文件/目录 | 说明 |
|---|---|
app/WEB-INF/conf/system.properties | 系统配置(zip安装) |
/etc/fess/system.properties | 系统配置(RPM/DEB软件包) |
app/WEB-INF/classes/fess_config.properties | Fess 详细配置 |
/etc/fess/fess_config.properties | Fess 详细配置(RPM/DEB软件包) |
app/WEB-INF/classes/log4j2.xml | 日志配置 |
/etc/fess/log4j2.xml | 日志配置(RPM/DEB软件包) |
app/WEB-INF/classes/fess_indices/ | 索引定义文件 |
thumbnail/ | 缩略图(如需要) |
配置文件备份示例
#!/bin/bash
BACKUP_DIR="/backup/fess/$(date +%Y%m%d_%H%M%S)"
mkdir -p ${BACKUP_DIR}
# 复制配置文件
cp -r /etc/fess/ ${BACKUP_DIR}/
cp -r /var/lib/fess/app/WEB-INF/conf/ ${BACKUP_DIR}/
cp -r /var/lib/fess/app/WEB-INF/classes/fess_indices/ ${BACKUP_DIR}/
# 可选: 缩略图
# cp -r /var/lib/fess/thumbnail/ ${BACKUP_DIR}/
echo "Backup completed: ${BACKUP_DIR}"
数据迁移
迁移到其他环境的步骤
在迁移源创建备份
创建 OpenSearch 快照。
备份配置文件。
准备迁移目标
在新环境安装 Fess。
启动 OpenSearch。
恢复配置文件
将备份的配置文件复制到新环境。
必要时修改路径和主机名等。
恢复索引
配置快照仓库。
从快照恢复索引。
运行确认
启动 Fess。
访问管理页面,确认配置。
确认搜索功能是否正常运行。
版本升级注意事项
在不同版本的 Fess 间迁移数据时,请注意以下几点。
OpenSearch 主版本不同时,可能出现兼容性问题。
索引结构有变更时,可能需要重新索引。
详情请参考各版本的升级指南。
故障排除
快照创建失败
请确认仓库路径的权限。
请确认磁盘容量是否充足。
请在 OpenSearch 日志文件中确认错误消息。
恢复失败
请确认是否已存在同名索引。
请确认 OpenSearch 版本是否兼容。
请确认快照是否损坏。
恢复后无法搜索
请确认索引是否正常恢复:
curl -X GET "localhost:9201/_cat/indices?v"请在 Fess 日志文件中确认是否有错误。
请确认配置文件是否正确恢复。
参考信息
详细信息请参考 OpenSearch 官方文档。