用于将osu!分数从MySQL加载到Elasticsearch的组件。
若使用Elasticsearch 8,需至少为8.2版本。需在索引器上设置以下环境变量:
bashELASTIC_CLIENT_APIVERSIONING=true
并在Elasticsearch服务器配置elasticsearch.yml中设置:
ymlxpack.security.enabled: false
或在Docker环境中(如docker-compose):
ymlenvironment: xpack.security.enabled: false
这将启用Elasticsearch的HTTP连接,禁用HTTPS和认证要求,并向客户端返回兼容响应。
使用字符串值指示当前要使用的模式版本。
队列处理器运行时,会将其处理的版本存储在Redis的集合osu-queue:score-index:${prefix}active-schemas中。
若队列处理器因模式版本更改自动停止,会将其处理的版本从集合中移除;若手动停止或因故障停止,则不会移除,以允许其他服务继续向这些队列推送数据。
preserve=true且所属用户user_warnings=0的分数将被添加到索引;任一条件不满足的分数将从索引中移除。
将项推送到队列osu-queue:score-index-${schema}。
运行dotnet run schema set ${schema},或直接在Redis中设置osu-queue:score-index:${prefix}schema。
配置通过环境变量加载,不自动加载环境文件。若需从环境文件读取,可前缀命令:env $(cat {envfile})(注:此方式不支持含空格的值),例如:
env $(cat .env) dotnet run
每批处理的最大项数,影响发送到Elasticsearch的_bulk请求大小。
默认值:***。
队列处理期间允许的最大在飞行项数(BATCH_SIZE * BUFFER_SIZE)。
默认值:5(默认共50000项)。
MySQL主机地址。
默认值:localhost。
数据库用户名。
默认值:root。
Elasticsearch索引名的可选前缀。
Elasticsearch主机URL。
默认值:http://localhost:9200。
Redis连接字符串;配置选项参见此处。
默认值:localhost。
队列的模式版本;参见模式。
MySQL连接字符串(Docker部署中使用)。
本文档假设可使用dotnet run;若不可用,可直接使用程序集,例如dotnet osu.ElasticIndexer.dll。
运行queue命令会自动创建索引(若不存在匹配请求模式的开放索引);若存在,则复用。
SCHEMA=${schema} dotnet run queue watch
示例:
SCHEMA=1 dotnet run queue watch
dotnet run schema get
dotnet run schema set ${schema}
用于测试目的清除模式版本:
dotnet run schema clear
可手动更改别名指向的索引:
dotnet run schema alias ${schema}
将更新索引别名至带模式${schema}标签的最新索引。
列出所有索引及其状态(模式、别名、开放/关闭):
dotnet run index list
关闭除活动索引外的所有分数索引,释放Elasticsearch内存:
dotnet run index close
可指定索引名称关闭特定索引,例如关闭index_1:
dotnet run index close index_1
删除所有处于closed状态的索引,释放存储空间:
dotnet run index delete
可指定索引名称删除特定索引:
dotnet run index delete index_1
为测试目的添加假项到队列:
SCHEMA=1 dotnet run queue pump-fake
注意:这些项不存在于数据库中,也不匹配实际数据。
按ID索引分数:
SCHEMA=${schema} dotnet run queue pump-score ${id}
示例:
SCHEMA=1 dotnet run queue pump-score 1
读取现有solo_scores并添加到队列(仅含对应phpbb_users条目的分数会被 queued):
SCHEMA=1 dotnet run queue pump-all
额外选项:
--from {id}:从指定solo_scores.id开始读取--switch:最后一项入队后设置模式版本(不等待索引完成,用于测试)列出已知有队列处理器监听的版本:
dotnet run active-schemas list
用于调试或手动维护:
dotnet run active-schemas add ${schema} dotnet run active-schemas remove ${schema}
通过向队列推送分数项来填充索引。
docker build -t ${tagname} -f osu.ElasticIndexer/Dockerfile osu.ElasticIndexer
docker run -e SCHEMA=1 -e "ES_HOST=[***]" -e "ES_INDEX_PREFIX=docker." -e "REDIS_HOST=host.docker.internal" -e "DB_CONNECTION_STRING=Server=host.docker.internal;Database=osu;Uid=osuweb;SslMode=None;" ${tagname} ${cmd}
其中${cmd}为要运行的命令,例如dotnet osu.ElasticIndexer.dll queue watch。
向Redis队列osu-queue:score-index-${schema}推送项,例如:
csharpListLeftPush("osu-queue:score-index-1", "{ \"ScoreId\": 1 }");
bashLPUSH "osu-queue:score-index-1" "{\"ScoreId\":1}"
json{ "ScoreId": 1 }
json{ "Score": {Solo.Score} }
docker run -e SCHEMA=1 -e ES_HOST=[***] -e REDIS_HOST=redis ${tagname} dotnet osu.ElasticIndexer.dll queue watch
docker run -e REDIS_HOST=redis ${tagname} dotnet osu.ElasticIndexer.dll schema get

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429