一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux如何安装Solr搜索引擎

时间:2026-07-07 08:02:52 编辑:袖梨 来源:一聚教程网

Solr 8.11+ 推荐使用 bin/solr start 启动内置 Jetty,而非外置 Tomcat;需确保 Java 11+(OpenJDK 更稳)、默认 server/solr 路径不可乱改、中文分词器须通过 analyzer 接口实测验证、启动失败优先查 solr.log 和 netstat -tuln | grep :8983。

直接说结论:Solr 8.11+ 推荐用 bin/solr start 启动内置 Jetty,别硬套 Tomcat;只有老版本(7.x 及更早)或有强监控/多租户需求时才考虑外置容器。


Java 版本不对,bin/solr start 会静默失败

不是报错退出,就是卡在 “Starting Solr” 不动,或者启动后立刻消失 —— 八成是 Java 版本不匹配。

  • Solr 8.11.x 要求 java -version 输出必须含 11.(如 11.0.22),不能是 1.8.0_*
  • Solr 9.x 强制要求 Java 17+,用 OpenJDK 更稳(CentOS/RHEL 执行 sudo yum install -y java-17-openjdk-devel
  • 别改 SOLR_JAVA_HOME 绕过检查:它只影响启动脚本读取路径,不改变 JVM 实际版本;真正起作用的是系统 PATH 中的 java 命令
  • 验证方式:运行 bin/solr start -V,第一行就显示 Using Java 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 是 runtime 加载依据,删了 UI 或 API 创建 core 都会失败

中文分词器装完没生效?别只看插件是否加载成功

插件复制进 server/solr/configsets/_default/conf/analysis-ik/、改了 managed-schema、重启了 Solr —— 这些都只是“表面完成”。真正要看效果,得走 analyzer 接口实测。

  • 执行命令:curl "http://localhost:8080/solr/mycore/analysis/field?analysis.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.shSOLR_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 访问,不是本地 localhost;如果绑定了 127.0.0.1(默认行为),需改 solr.in.shSOLR_HOST0.0.0.0 才能外网访问

复杂点在于:Solr 启动逻辑看似简单,实际耦合了 Java 版本、路径约定、配置加载顺序、网络绑定策略四层判断;任何一个环节偏离默认假设,都会导致“没报错但不工作”。最容易被忽略的是 server/solr 这个隐式 home 路径,以及 analyzer 接口的实测验证 —— 它们不显眼,但决定功能是否真可用。

热门栏目