Solr安装与配置 #

一、环境要求 #

1.1 系统要求 #

要求 说明
Java JDK 11 或更高版本(Solr 9.x需要JDK 17+)
内存 最小2GB,推荐4GB以上
磁盘 根据数据量决定,建议SSD
操作系统 Linux/Windows/macOS

1.2 检查Java环境 #

bash
# 检查Java版本
java -version

# 输出示例
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

1.3 设置JAVA_HOME #

bash
# Linux/macOS
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# 添加到 ~/.bashrc 或 ~/.zshrc
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
powershell
# Windows PowerShell
$env:JAVA_HOME = "C:\Program Files\Java\jdk-17"
$env:Path = "$env:JAVA_HOME\bin;$env:Path"

二、Linux安装 #

2.1 下载安装 #

bash
# 下载Solr
wget https://archive.apache.org/dist/solr/solr/9.4.0/solr-9.4.0.tgz

# 解压
tar -xzf solr-9.4.0.tgz

# 进入目录
cd solr-9.4.0

2.2 启动Solr #

bash
# 前台启动(开发环境)
bin/solr start

# 指定端口启动
bin/solr start -p 8984

# 后台启动
bin/solr start -d

# SolrCloud模式启动
bin/solr start -c -p 8983

2.3 停止Solr #

bash
# 停止所有Solr实例
bin/solr stop -all

# 停止指定端口
bin/solr stop -p 8983

2.4 检查状态 #

bash
# 检查Solr状态
bin/solr status

# 输出示例
Found 1 Solr nodes: 

Solr process 12345 running on port 8983
{
  "solr_home":"/opt/solr/server/solr",
  "version":"9.4.0",
  "startTime":"2026-03-27T10:00:00.000Z",
  "uptime":"0 days, 0 hours, 5 minutes",
  "memory":"100 MB of 512 MB"}

三、Windows安装 #

3.1 下载安装 #

powershell
# 使用PowerShell下载
Invoke-WebRequest -Uri "https://archive.apache.org/dist/solr/solr/9.4.0/solr-9.4.0.zip" -OutFile "solr-9.4.0.zip"

# 解压
Expand-Archive -Path solr-9.4.0.zip -DestinationPath .

3.2 启动Solr #

powershell
# 进入目录
cd solr-9.4.0

# 启动
.\bin\solr.cmd start

# 指定端口
.\bin\solr.cmd start -p 8984

3.3 停止Solr #

powershell
# 停止
.\bin\solr.cmd stop -all

# 停止指定端口
.\bin\solr.cmd stop -p 8983

四、macOS安装 #

4.1 使用Homebrew #

bash
# 安装Solr
brew install solr

# 启动服务
brew services start solr

# 停止服务
brew services stop solr

# 重启服务
brew services restart solr

4.2 手动安装 #

bash
# 下载
curl -O https://archive.apache.org/dist/solr/solr/9.4.0/solr-9.4.0.tgz

# 解压
tar -xzf solr-9.4.0.tgz

# 启动
cd solr-9.4.0
bin/solr start

五、Docker安装 #

5.1 单节点部署 #

bash
# 拉取镜像
docker pull solr:9.4

# 启动容器
docker run -d \
  --name solr \
  -p 8983:8983 \
  -v solr_data:/var/solr \
  solr:9.4

# 创建Core
docker exec -it solr solr create_core -c mycore

5.2 SolrCloud部署 #

yaml
# docker-compose.yml
version: '3'

services:
  zookeeper:
    image: zookeeper:3.8
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      - ZOO_MY_ID=1

  solr1:
    image: solr:9.4
    container_name: solr1
    ports:
      - "8983:8983"
    environment:
      - ZK_HOST=zookeeper:2181
    depends_on:
      - zookeeper

  solr2:
    image: solr:9.4
    container_name: solr2
    ports:
      - "8984:8983"
    environment:
      - ZK_HOST=zookeeper:2181
    depends_on:
      - zookeeper
bash
# 启动集群
docker-compose up -d

# 创建Collection
docker exec -it solr1 solr create_collection -c mycollection -shards 2 -replicationFactor 2

六、目录结构 #

6.1 Solr安装目录 #

text
solr-9.4.0/
├── bin/                    # 启动脚本
│   ├── solr               # Linux/macOS启动脚本
│   ├── solr.cmd           # Windows启动脚本
│   └── solr.in.sh         # 环境变量配置
├── contrib/                # 贡献模块
│   ├── analysis-extras/   # 额外分析器
│   ├── dataimporthandler/ # 数据导入处理器
│   └── clustering/        # 聚类组件
├── dist/                   # Solr JAR文件
├── example/                # 示例配置
├── licenses/               # 许可证文件
└── server/                 # 服务器目录
    ├── solr/              # Solr Home(默认)
    ├── solr-webapp/       # Web应用
    └── logs/              # 日志目录

6.2 Solr Home目录 #

text
server/solr/
├── solr.xml               # Solr全局配置
├── configsets/            # 配置集模板
│   └── _default/         # 默认配置集
│       ├── conf/
│       │   ├── solrconfig.xml
│       │   ├── schema.xml (或 managed-schema)
│       │   └── lang/
│       └── core.properties
└── mycore/               # 自定义Core
    ├── conf/
    │   ├── solrconfig.xml
    │   ├── managed-schema
    │   └── lang/
    ├── data/             # 索引数据
    └── core.properties   # Core配置

七、核心配置文件 #

7.1 solr.xml #

xml
<?xml version="1.0" encoding="UTF-8"?>
<solr>
  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8983}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
  </solrcloud>
  
  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:600000}</int>
    <int name="connTimeout">${connTimeout:60000}</int>
  </shardHandlerFactory>
</solr>

7.2 solrconfig.xml #

xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <luceneMatchVersion>9.4</luceneMatchVersion>
  
  <lib dir="${solr.install.dir:../../../..}/contrib/" regex=".*\.jar" />
  
  <dataDir>${solr.data.dir:}</dataDir>
  
  <directoryFactory name="DirectoryFactory"
    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
  
  <indexConfig>
    <maxFieldLength>10000</maxFieldLength>
    <writeLockTimeout>1000</writeLockTimeout>
    <useCompoundFile>false</useCompoundFile>
  </indexConfig>
  
  <updateHandler class="solr.DirectUpdateHandler2">
    <maxPendingDeletes>1000</maxPendingDeletes>
    <autoCommit>
      <maxTime>15000</maxTime>
      <openSearcher>false</openSearcher>
    </autoCommit>
    <autoSoftCommit>
      <maxTime>1000</maxTime>
    </autoSoftCommit>
  </updateHandler>
  
  <query>
    <maxBooleanClauses>1024</maxBooleanClauses>
    <enableLazyFieldLoading>true</enableLazyFieldLoading>
    <queryResultWindowSize>20</queryResultWindowSize>
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
  </query>
  
  <requestHandler name="/select" class="solr.SearchHandler">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <int name="rows">10</int>
    </lst>
  </requestHandler>
  
  <requestHandler name="/update" class="solr.UpdateRequestHandler"/>
  
  <requestHandler name="/analysis/field"
    class="solr.FieldAnalysisRequestHandler"/>
</config>

7.3 managed-schema #

xml
<?xml version="1.0" encoding="UTF-8"?>
<schema name="example" version="1.6">
  <uniqueKey>id</uniqueKey>
  
  <fieldType name="string" class="solr.StrField"/>
  <fieldType name="long" class="solr.TrieLongField"/>
  <fieldType name="text_general" class="solr.TextField">
    <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>
  
  <field name="id" type="string" indexed="true" stored="true" required="true"/>
  <field name="title" type="text_general" indexed="true" stored="true"/>
  <field name="content" type="text_general" indexed="true" stored="true"/>
  <field name="timestamp" type="long" indexed="true" stored="true"/>
  
  <dynamicField name="*_i" type="int" indexed="true" stored="true"/>
  <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
  <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
</schema>

八、内存配置 #

8.1 JVM参数配置 #

bash
# 编辑 bin/solr.in.sh (Linux/macOS)
SOLR_JAVA_MEM="-Xms2g -Xmx4g"

# 编辑 bin/solr.in.cmd (Windows)
set SOLR_JAVA_MEM=-Xms2g -Xmx4g

8.2 启动时指定内存 #

bash
bin/solr start -m 4g

九、验证安装 #

9.1 访问管理界面 #

打开浏览器访问:http://localhost:8983/solr

9.2 创建测试Core #

bash
# 创建Core
bin/solr create_core -c test_core

# 输出
Created new core 'test_core'

9.3 测试索引和查询 #

bash
# 索引文档
bin/post -c test_core example/exampledocs/books.json

# 查询
curl "http://localhost:8983/solr/test_core/select?q=*:*"

十、常见问题 #

10.1 端口被占用 #

bash
# 查看端口占用
lsof -i :8983

# 或
netstat -tlnp | grep 8983

# 杀掉进程
kill -9 <PID>

10.2 内存不足 #

bash
# 增加内存
SOLR_JAVA_MEM="-Xms4g -Xmx8g" bin/solr start

10.3 权限问题 #

bash
# 修改目录权限
chmod -R 755 /path/to/solr
chown -R solr:solr /path/to/solr

十一、总结 #

安装要点:

步骤 说明
环境检查 确保Java版本正确
下载安装 选择合适的安装方式
启动服务 单机或SolrCloud模式
创建Core 创建索引存储单元
验证安装 访问管理界面测试

下一步,让我们学习Solr的核心概念!

最后更新:2026-03-27