
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
用于将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请求大小。
默认值:10000。
队列处理期间允许的最大在飞行项数(BATCH_SIZE * BUFFER_SIZE)。
默认值:5(默认共50000项)。
MySQL主机地址。
默认值:localhost。
数据库用户名。
默认值:root。
Elasticsearch索引名的可选前缀。
Elasticsearch主机URL。
默认值:http://localhost:9200。
Redis连接字符串;配置选项参见https://stackexchange.github.io/StackExchange.Redis/Configuration.html#configuration-options%E3%80%82
默认值: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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务