Solr8.11及以上版本推荐使用bin/solrstart脚本启动内置Jetty服务器,Java版本必须严格匹配:8.11版要求使用Java11,9.x版要求使用Java17。默认的solrhome路径为server/solr,自定义路径需使用-s参数。中文分词器需通过analyzer接口验证是否生效。默认端口为8983,如启动失败可查看server/lo
Linux安装Solr搜索引擎教程
作者:技术拾光
时间:2026-07-03
浏览:387
文章目录
直接说结论:Solr 8.11+ 推荐用 bin/solr start 启动内置 Jetty,别硬套 Tomcat;只有老版本(7.x 及更早)或有强监控/多租户需求时才考虑外置容器。
Ja va 版本不对,bin/solr start 会静默失败
不是报错退出,就是卡在 “Starting Solr” 不动,或者启动后立刻消失 —— 八成是 Ja va 版本不匹配。
- Solr 8.11.x 这边有个硬门槛:
ja va -version输出的版本号里必须带着11.(比如11.0.22),1.8.0_*是绝对不行的。 - Solr 9.x 更严格,强制要求 Ja va 17+,而且 OpenJDK 用起来更稳。CentOS/RHEL 上直接
sudo yum install -y ja va-17-openjdk-devel就搞定。 - 千万别想着改
SOLR_JA VA_HOME来绕过检查 —— 这个变量只影响启动脚本读取路径,真正决定 JVM 版本的是系统PATH里的ja va命令,改了也没用。 - 验证方法很简单:跑一下
bin/solr start -V,第一行就会显示Using Ja va version: ...,版本不对就老老实实换 JDK。
solr home 路径搞错,新建 core 就报 Can't find configset '_default'
这不是配置文件丢了,而是 Solr 根本没找到 configset 目录。默认情况下,Solr 8+ 把 server/solr 当作 root solr home —— 注意,这是个硬编码路径,不是靠环境变量驱动的。
- 别乱设
SOLR_HOME:一旦 export 过,所有 core 都得放在你指定的路径下,而且那个路径里必须有configsets/_default,否则bin/solr create -c mycore必挂。 - 正确做法是保持默认,让 Solr 自己管
server/solr;新建 core 时命令会自动在server/solr/mycore/conf/下建好标准结构。 - 如果真要自定义路径,用
-s /path/to/home参数(比如bin/solr create -c mycore -s /opt/my-solr-home),别碰环境变量。 - 另外,
server/solr/mycore/core.properties这个文件不能删:里面的configSet=xxx是运行时加载依据,删了 UI 或 API 创建 core 都会失败。
中文分词器装完没生效?别只看插件是否加载成功
插件复制进 server/solr/configsets/_default/conf/analysis-ik/、改了 managed-schema、重启了 Solr —— 这些都只是“表面完成”。真正要看效果,得走 analyzer 接口实测一下。
- 执行命令:
curl "http://localhost:8080/solr/mycore/analysis/fieldanalysis.fieldname=text_general&analysis.text=北京大学" - 重点看返回 JSON 中
tokens数组:如果还是单字切分("北","京","大","学"),说明 IK 没生效;正确结果应该是"北京大学"或"北京","大学"。 - 常见坑:schema 中字段 type 指向的
text_ik类型没定义,或者定义里analyzer class="org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer"写成了旧版类名 —— Solr 8+ 已经弃用了SmartChineseAnalyzer,改用analysis-smartcn插件配合smartcn_tokenizer。 - 注意端口:默认是 8983,不是 8080;如果你改过
solr.in.sh里的SOLR_PORT,curl 地址也得同步更新。
启动后访问不了 Web UI?先查端口和防火墙,再看日志位置
浏览器打不开 http://localhost:8983/solr 别急着重装,90% 是网络或权限问题。
- 先确认 Solr 真跑起来了:执行
bin/solr status,输出里应该有solr-8.11.2 is running和 PID。 - 查监听端口:
netstat -tuln | grep :8983,没输出说明没监听成功;如果有输出但外部访问不了,大概率是防火墙拦住了。 - CentOS/RHEL 上执行:
sudo firewall-cmd --permanent --add-port=8983/tcp && sudo firewall-cmd --reload。 - 日志不在
catalina.out:Solr 8+ 默认写到server/logs/solr.log,错误信息全在里面。启动失败时,用bin/solr start -f(前台模式)能实时看到报错。 - 别只盯着
localhost:远程服务器上要用服务器 IP 访问;如果 Solr 绑定了127.0.0.1(默认行为),需要改solr.in.sh里的SOLR_HOST为0.0.0.0才能外网访问。
复杂点在于:Solr 启动逻辑看似简单,实际耦合了 Ja va 版本、路径约定、配置加载顺序、网络绑定策略四层判断;任何一个环节偏离默认假设,都会导致“没报错但不工作”。最容易被忽略的是 server/solr 这个隐式 home 路径,以及 analyzer 接口的实测验证 —— 它们不显眼,但决定功能是否真可用。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章