Core管理 #
一、Core概述 #
1.1 什么是Core #
Core是Solr的基本运行单元,每个Core包含:
- 索引数据(Lucene索引文件)
- 配置文件(solrconfig.xml、managed-schema)
- 数据目录
- 日志文件
1.2 Core与Collection #
| 模式 | 概念 | 说明 |
|---|---|---|
| 单机模式 | Core | 单个索引实例 |
| SolrCloud模式 | Collection | 分布式索引,由多个Shard组成 |
二、创建Core #
2.1 命令行创建 #
bash
# 基础创建
bin/solr create_core -c mycore
# 指定配置集
bin/solr create_core -c mycore -d _default
# 指定配置目录
bin/solr create_core -c mycore -d /path/to/config
# 指定实例目录
bin/solr create_core -c mycore -d _default -D /path/to/instance
2.2 API创建 #
bash
curl "http://localhost:8983/solr/admin/cores?action=CREATE&name=mycore&configSet=_default"
2.3 手动创建 #
bash
# 创建目录结构
mkdir -p server/solr/mycore/conf
mkdir -p server/solr/mycore/data
# 复制配置文件
cp -r server/solr/configsets/_default/conf/* server/solr/mycore/conf/
# 创建core.properties
echo "name=mycore" > server/solr/mycore/core.properties
# 重启Solr
bin/solr restart
2.4 配置集(ConfigSet) #
Solr提供预定义配置集:
| 配置集 | 说明 |
|---|---|
| _default | 默认配置,适合大多数场景 |
| _nested | 支持嵌套文档 |
| sample_techproducts_configs | 示例配置 |
bash
# 查看配置集
ls server/solr/configsets/
# 使用自定义配置集
bin/solr create_core -c mycore -d my_custom_configset
三、Core操作 #
3.1 查看Core状态 #
命令行
bash
bin/solr status
API方式
bash
# 查看所有Core状态
curl "http://localhost:8983/solr/admin/cores?action=STATUS"
# 查看指定Core状态
curl "http://localhost:8983/solr/admin/cores?action=STATUS&core=mycore"
响应示例
json
{
"responseHeader": {
"status": 0,
"QTime": 2
},
"status": {
"mycore": {
"name": "mycore",
"instanceDir": "/opt/solr/server/solr/mycore",
"dataDir": "/opt/solr/server/solr/mycore/data/",
"config": "solrconfig.xml",
"schema": "managed-schema",
"startTime": "2026-03-27T10:00:00.000Z",
"uptime": 3600000,
"index": {
"numDocs": 1000,
"maxDoc": 1000,
"deletedDocs": 0,
"indexHeapUsageBytes": 1048576,
"version": 12345,
"segmentCount": 5,
"size": "10.5 MB"
}
}
}
}
3.2 重载Core #
修改配置后需要重载Core:
bash
# 命令行
bin/solr reload -c mycore
# API方式
curl "http://localhost:8983/solr/admin/cores?action=RELOAD&core=mycore"
3.3 重命名Core #
bash
curl "http://localhost:8983/solr/admin/cores?action=RENAME&core=old_name&other=new_name"
3.4 交换Core #
用于零停机切换索引:
bash
curl "http://localhost:8983/solr/admin/cores?action=SWAP&core=core1&other=core2"
3.5 删除Core #
bash
# 命令行
bin/solr delete -c mycore
# API方式(只删除Core,保留数据)
curl "http://localhost:8983/solr/admin/cores?action=UNLOAD&core=mycore"
# API方式(删除Core和数据)
curl "http://localhost:8983/solr/admin/cores?action=UNLOAD&core=mycore&deleteInstanceDir=true"
四、Core Admin API #
4.1 ACTION列表 #
| Action | 说明 |
|---|---|
| STATUS | 查看状态 |
| CREATE | 创建Core |
| RELOAD | 重载Core |
| RENAME | 重命名 |
| SWAP | 交换Core |
| UNLOAD | 卸载Core |
| MERGEINDEXES | 合并索引 |
| SPLIT | 分割索引 |
| REQUESTSTATUS | 请求状态 |
4.2 合并索引 #
bash
curl "http://localhost:8983/solr/admin/cores?action=MERGEINDEXES&core=target_core&srcCore=source_core1&srcCore=source_core2"
4.3 分割索引 #
bash
curl "http://localhost:8983/solr/admin/cores?action=SPLIT&core=source_core&targetCore=split1&targetCore=split2"
五、Core配置 #
5.1 core.properties #
properties
name=mycore
config=solrconfig.xml
schema=managed-schema
dataDir=data
ulogDir=data
configSet=_default
transient=false
loadOnStartup=true
coreNodeName=
collection=
shard=
roles=
properties=
5.2 solr.xml配置 #
xml
<solr>
<cores adminPath="/admin/cores">
<core name="core1" instanceDir="core1" />
<core name="core2" instanceDir="core2" />
</cores>
</solr>
六、Core目录结构 #
6.1 标准目录结构 #
text
mycore/
├── conf/
│ ├── solrconfig.xml # 主要配置文件
│ ├── managed-schema # Schema定义
│ ├── lang/ # 语言资源
│ │ ├── stopwords.txt
│ │ └── synonyms.txt
│ ├── velocity/ # Velocity模板
│ ├── clustering/ # 聚类配置
│ └── dataimport.properties
├── data/
│ ├── index/ # 索引数据
│ ├── tlog/ # 事务日志
│ └── snapshot_metadata/ # 快照元数据
└── core.properties # Core配置
6.2 数据目录 #
bash
# 查看索引大小
du -sh server/solr/mycore/data/index/
# 查看事务日志
ls -la server/solr/mycore/data/tlog/
七、Core监控 #
7.1 管理界面 #
访问:http://localhost:8983/solr/#/~cores
7.2 Core统计信息 #
bash
# 获取Core统计
curl "http://localhost:8983/solr/mycore/admin/stats"
7.3 健康检查 #
bash
# Ping检查
curl "http://localhost:8983/solr/mycore/admin/ping"
# 响应
{
"status": "OK",
"responseHeader": {
"status": 0,
"QTime": 5
}
}
八、Core备份与恢复 #
8.1 创建备份 #
bash
# API方式
curl "http://localhost:8983/solr/mycore/replication?command=backup&location=/backup/path&name=mycore_backup"
# 命令行
bin/solr backup -c mycore -l /backup/path -n mycore_backup
8.2 恢复备份 #
bash
# API方式
curl "http://localhost:8983/solr/mycore/replication?command=restore&location=/backup/path&name=mycore_backup"
# 命令行
bin/solr restore -c mycore -l /backup/path -n mycore_backup
8.3 查看备份状态 #
bash
curl "http://localhost:8983/solr/mycore/replication?command=details"
九、Core优化 #
9.1 索引优化 #
bash
# 优化索引(合并段)
curl "http://localhost:8983/solr/mycore/update?optimize=true"
# 指定最大段数
curl "http://localhost:8983/solr/mycore/update?optimize=true&maxSegments=1"
9.2 清空索引 #
bash
# 删除所有文档
curl -X POST "http://localhost:8983/solr/mycore/update" \
-H "Content-Type: application/json" \
-d '{"delete": {"query": "*:*"}}'
# 提交
curl -X POST "http://localhost:8983/solr/mycore/update?commit=true"
十、多Core管理 #
10.1 创建多个Core #
bash
# 创建多个Core
for core in products users orders logs; do
bin/solr create_core -c $core
done
10.2 批量操作 #
bash
# 查看所有Core状态
curl "http://localhost:8983/solr/admin/cores?action=STATUS" | jq '.status | keys'
# 批量重载
for core in products users orders; do
curl "http://localhost:8983/solr/admin/cores?action=RELOAD&core=$core"
done
十一、Core模板 #
11.1 创建自定义模板 #
bash
# 创建模板目录
mkdir -p server/solr/configsets/my_template/conf
# 复制并修改配置
cp -r server/solr/configsets/_default/conf/* server/solr/configsets/my_template/conf/
# 编辑配置
vim server/solr/configsets/my_template/conf/solrconfig.xml
vim server/solr/configsets/my_template/conf/managed-schema
11.2 使用模板创建Core #
bash
bin/solr create_core -c new_core -d my_template
十二、常见问题 #
12.1 Core无法启动 #
bash
# 检查日志
tail -f server/logs/solr.log
# 检查配置文件
xmllint --noout server/solr/mycore/conf/solrconfig.xml
xmllint --noout server/solr/mycore/conf/managed-schema
12.2 索引损坏 #
bash
# 检查索引
java -cp server/solr-webapp/webapp/WEB-INF/lib/*:server/lib/ext/* \
org.apache.lucene.index.CheckIndex server/solr/mycore/data/index
# 修复索引
curl "http://localhost:8983/solr/mycore/update?optimize=true"
12.3 磁盘空间不足 #
bash
# 检查磁盘使用
df -h
# 清理旧事务日志
rm -f server/solr/mycore/data/tlog/tlog.*
# 优化索引减少大小
curl "http://localhost:8983/solr/mycore/update?optimize=true&maxSegments=1"
十三、总结 #
Core管理要点:
| 操作 | 命令/API |
|---|---|
| 创建 | bin/solr create_core -c name |
| 状态 | curl …/admin/cores?action=STATUS |
| 重载 | curl …/admin/cores?action=RELOAD |
| 删除 | bin/solr delete -c name |
| 备份 | curl …/replication?command=backup |
| 优化 | curl …/update?optimize=true |
最佳实践:
- 使用配置集管理配置
- 定期备份索引
- 监控索引大小
- 合理规划Core数量
下一步,让我们学习Schema设计!
最后更新:2026-03-27