Apache Solr™8.0.0已于2019年3月14日发布。
Solr8最低支持的Java版本是Java8,但由于官方在升级日志中声明:
ALPN is not supported in Java 8 or lower version therefore when a node started in Java 8 or a lower version with SSL enabled, it will send and can only be able to handle HTTP/1.1 requests. In case of using SSL Java 9 or latter versions are recommended.
所以建议使用9以上的Java版本 。
本篇使用linux环境举例,windows下的部署基本相同。
(我用了图形化linux,因为懒)
1、首先准备Solr所需的JDK和Tomcat
2、在Apache的Solr官网上下载对应版本Solr,并解压
https://lucene.apache.org/solr/
3、拷贝web工程:将solr-8.0.0/server/solr-webapp/下的webapp文件夹拷贝到Tomcat的webapps目录下并改成你要用的名字 (在4和更早的版本中会以war包形式存在,需解压war包):

4、拷贝日志工具相关jar包:将solr-8.0.0/server/lib/ext下的jar包拷贝至上面Tomcat下Solr的/WEB-INF/lib/目录下

5、拷贝metrics相关jar包:将solr-8.0.0/server/lib下metrics相关jar包也拷贝至/WEB-INF/lib/目录下

缺少相关文件会导致项目启动失败并报filterStart Exception(启动过滤器异常)
linux下:
严重 [*] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常
java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSet
windows下:
严重 [*] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SolrRequestFilter
java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSet
6、拷贝log4j2配置文件:将solr-8.0.0/server/resource目录中的log4j配置文件拷入web工程目录WEB-INF/classes(自行创建目录)
![]()
需要注意的是从Solr7开始内置log4j升级至log4j2,而log4j2不再支持properties配置文件而需要使用json或xml来配置。
因为不使用日志文件,直接注释掉log4j2.xml的<RollingFile>标签。
7、创建solrhome:拷贝solr-8.0.0/server/solr目录到你想要的位置,Solrhome是存放solr服务器所有配置文件的目录。
8、指定solrhome位置:修改solrweb工程的web.xml文件,在web-app节点下添加
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>“你的solrhome位置”</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>注:该配置在6以及之前的版本是已经存在但被注释掉的,从7及之后的版本已被删除但目前(8.0.0)仍能使用
之后注释掉<security-constraint>整个标签,这个标签负责安全认证,这里暂不介绍。
启动Tomcat即可访问。(ip):(port)/(工程名)/index.html
