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