solr 7.6 安装部署与遇到的问题
Solr 是基于开放标准的,它是高度可扩展的。Solr 查询是简单的 HTTP 请求 URL,响应是一个结构化文档:主要是 JSON,但也可以是 XML、CSV 或其他格式。这意味着各种各样的客户端将能够使用 Solr,从其他 Web 应用程序到浏览器客户端、丰富的客户端应用程序和移动设备。任何能够使用 HTTP 的平台都可以与 Solr 对话。
学习solr 除了官网文档我们还可以看这边的中午文档:https://www.w3cschool.cn/solr_doc/solr_doc-ltzn2fm4.html
solr 默认是有web容器的 jetty ,我们也可以将它存放在tomcat 里面。
直接使用默认的话是可以直接启动的,要使用tomcat 的话就比较麻烦点了。
由于tomcat 在企业应用较多,相对jetty 更为熟悉。所以我们这里使用的是tomcat进行搭建。
jetty 与tomcat 的对比
安装 solr
下载solr(7.6版本) :
cd /opt wget http://mirrors.shu.edu.cn/apache/lucene/solr/7.6.0/solr-7.6.0.tgz
tar -xzf solr-7.6.0.tgz
配置solr 到tomcat(关键)
将solr 的webapp文件复制到tomcat的webapps目录下并命名为solr
cp -r /opt/solr-7.6.0/server/solr-webapp /opt/tomcat-solr/webapps/solr
配置依赖包
将solr下 /ext 文件夹中 所有的jar 包复制到 tomcat 里的solr 目录下的WEB-INF/lib 下
cp -r /opt/solr-7.6.0/server/lib/ext/ /opt/tomcat-solr/webapps/solr/WEB-INF/lib/
将solr下 server/lib/metrics开头的jar包复制到 tomcat里的solr 目录下的WEB-INF/lib 下
cp -r /opt/solr-7.6.0/server/lib/metrics*.jar /opt/tomcat-solr/webapps/solr/WEB-INF/lib/
创建tomcat solr 的 classes 文件
mkdir /opt/tomcat-solr/webapps/solr/WEB-INF/classes
复制 jetty-logging.properties,log4j2.xml 到 classes 文件夹下
cp /opt/solr-7.6.0/server/resources/jetty-logging.properties /opt/tomcat-solr/webapps/solr/WEB-INF/classes
cp /opt/solr-7.6.0/server/resources/log4j2.xml /opt/tomcat-solr/webapps/solr/WEB-INF/classes
创建 solr 的core 的主目录(也就是存放core的位置)
cp -r /opt/solr-7.6.0/server/solr /opt/solrhome
修改配置文件指定solr的home
vim /opt/tomcat-solr/webapps/solr/WEB-INF/web.xml
添加以下内容:(注意第三行的值要替换成你们solr的home的绝对路径)
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
添加位置:

解决限制资源访问
如果我们按照上面的配置好了,并启动好了tomcat,那么我们直接去访问我们的solr 会发现这个错:
HTTP Status 403 - Access to the requested resource has been denied,拒绝我们的访问资源请求。
解决办法:
注释
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
更改图片位置

然后启动tomcat ,我们访问:http://ip:port/solr/index.html
启动成功图示:

遇到的问题以及解决办法:
错误1
错误内容
Unable to resolve canonical hostname for local host, possible DNS misconfiguration. Set the 'solr.dns.prevent.reverse.lookup' sysprop to true on startup to prevent future lookups if DNS can not be fixed.
问题原因:
通过解析hostname 找不到对应的本地主机。原因是我更改了hostname,但是我没有更改/etc/hosts 文件,你可以直接 ping 下主机名,看看是否能正常解析到127.0.0.1 。我的是不可以,所以这里报解析错误。
解决办法:
编辑 /etc/hosts文件
在 127.0.0.1 和::1 后面添加 你的新主机名
示例: 我的主机名是ngrok
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ngrok
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ngrok
创建core
创建core 目录
我这里的solr 的home目录是 /opt/solrhome
mkdir /opt/solrhome/test1
添加配置文件
将配置文件复制到 test1 目录下
cp /opt/solrhome/configsets/_default/conf/ /opt/solrhome/test1/
添加data目录
用于存放数据
mkdir /opt/solrhome/test1/data/
添加core.properties 文件
name=test1 ,test1值换成你们core的名称。
echo "name=test1" >/opt/solrhome/test1/core.properties
我们重新启动就可以在 core 看到我们新加的目录名称了。
遇到的问题以及解决办法:
错误一
错误内容
2019/1/9 上午11:01:16
WARN false x:ljf_dev SolrConfig Couldn't add files from /opt/solrhome/ljf_dev/../../../../contrib/extraction/lib filtered by .*\.jar to classpath: /opt/solrhome/ljf_dev/../../../../contrib/extraction/lib
2019/1/9 上午11:01:16
WARN falsex:ljf_dev SolrConfig Couldn't add files from /opt/solrhome/ljf_dev/../../../../dist filtered by solr-cell-\d.*\.jar to classpath: /opt/solrhome/ljf_dev/../../../../dist
错误原因
上面的错误是说加载不到那些jar包 ,上面的这些jar包还在我们解压的文件里面,它肯定是找不到,我们先找到我们这个配置文件,然后修改它寻找的路径。
配置文件是 core 目录下的 conf 里的 solrconfig.xml
我们可以看到默认的配置路径是: 这个路径是solr的安装路径,我们可以更改成绝对路径
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
解决办法
将那些jar包放在一个固定路径,然后更改配置文件里的路径为绝对路径
#备份下配置文件
cp /opt/solrhome/test1/conf/solrconfig.xml /opt/solrhome/test1/conf/solrconfig.xml.bak
#将依赖文件复制到 tomcat solr 下
cp -r /opt/solr-7.6.0/dist/ /opt/tomcat-solr/webapps/solr/
cp -r /opt/solr-7.6.0/contrib/ /opt/tomcat-solr/webapps/solr/
然后更改配置文件 /opt/solrhome/test1/conf/solrconfig.xml 修改为绝对路径,下面为为修改后的。
<lib dir="/opt/tomcat-solr/webapps/solr/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-velocity-\d.*\.jar" />
这样重新启动tomcat 就不会再有警告了。
配置分词器
分词器我们使用的是IK Analyzer
下载
下载链接 :百度云盘 提取码:i9uv(失效了评论区留言啊,我看到了会更新的)
添加依赖文件
下载好了后解压上传到服务器 :
有以下文件:
ext.dic # 词典
IKAnalyzer.cfg.xml #配置文件
ik-analyzer-solr5-5.x.jar #jar包
solr-analyzer-ik-5.1.0.jar #jar包
stopword.dic # 词典
我们需要将 jar 包放到 tomcat 下的solr 的WEB-INF/lib/ 下
将配置文件和词典 移动到 到 tomcat 下的solr 的WEB-INF/classes 下
cp /tmp/ikanalyzer-solr5/*.dic IKAnalyzer.cfg.xml /opt/tomcat-solr/webapps/solr/WEB-INF/classes/
cp /tmp/ikanalyzer-solr5/*.jar /opt/tomcat-solr/webapps/solr/WEB-INF/lib/
core 配置
core 配置
编辑我们solr home 下的 core 目录下conf里的managed-schema文件
vim /opt/solrhome/ljf_dev/conf/managed-schema
添加以下内容
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
添加后示图:

使用分词器。分词合作共赢

不知道为啥,我总觉得这个分词器有点不太准确。
扩展字典
vim /opt/tomcat-solr/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
注意事项:
在tomcat 运行之初我看到了错误日志
Missing Java Option solr.log.dir. Logging may be missing or incomplete
针对这次错误:https://issues.apache.org/jira/browse/OFBIZ-9375
也未给出答案,但是上面说到这个是一个不影响使用报错。
附加配置
core 添加字段
vim /opt/solrhome/test1/conf/managed-schema
<field name="age" type="string" multiValued="false" indexed="true" stored="true"/>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="info" type="text_ik" multiValued="false" indexed="true" stored="true"/>
<field name="name" type="string" multiValued="false" indexed="true" stored="true"/>
指定默认搜索字段
vim /opt/solrhome/test1/conf/solrconfig.xml
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<!-- 定义默认搜索字段 -->
<str name="df">info</str>
</lst>
</requestHandler>
配置数据源
vim /opt/solrhome/test1/conf/solrconfig.xml
添加以下内容:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
并新建data-config.xml文件配置数据库信息
data-config.xml 文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="dataSource" type="JdbcDataSource"
driver="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://url:1433/database;useLOBs=false"
user="user"
password="password" />
<document>
<entity name="Table" dataSource="dataSource" pk="id"
query="SELECT * FROM Table">
<field column='id' name='id' />
<field column='name' name='name' />
<field column='age' name='age' />
<field column='info' name='info' />
</entity>
</document>
</dataConfig>
本地较多内容来自但其中错误及解决方法均本人自己撰写:
https://blog.csdn.net/derlinchen/article/details/85719930
连接数据库:(上面写的不太完善)
https://blog.csdn.net/Amor_Leo/article/details/85256735
solr 7.6 安装部署与遇到的问题的更多相关文章
- solr集群安装部署
一.安装部署zookeeper集群 zookeeper集群 二.solr集群部署 集群配置 IP | 节点名称 | 环境 --- | --- | --- 192.168.137.128 | 192.1 ...
- solr笔记之安装部署到tomcat
1. 下载 solr 去官网下载,下载的时候选清华的镜像源,这个页面:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.1.0/ 在/ ...
- 【Solr】Solr的安装部署
目录 Solr安装部署 Solr Web界面分析 回到顶部 solr安装和部署 solr下载 http://lucene.apache.org/ 安装solr,就是去部署它的war包,war包所在的位 ...
- Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- Ranger安装部署 - solr安装
1. 概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方法. ...
- Nutch搜索引擎(第2期)_ Solr简介及安装
1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...
- solr6安装部署
难得写篇自己的原创文档了,哈哈哈,原谅我知识浅薄,积淀太少 一.涉及到的软件和环境jdk1.8.0_92,tomcat8,zookeeper3.4.8,solr6.1.0(solr6需要jdk8以上环 ...
- Nutch搜索引擎Solr简介及安装
Nutch搜索引擎(第2期)_ Solr简介及安装 1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...
- Solr7 安装部署 管理界面介绍
Solr7 安装部署 管理界面介绍 本章重点介绍CentOS 安装部署Solr7 ,Solr的管理界面介绍,添加核心Core配置,Dataimport导入数据,Documents 在线维护索引,Que ...
随机推荐
- android中Actionbar详解
1.什么是Action BarAction Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:1)突出显示一些重要操作(如“最新”.“搜索”等)2) ...
- python关键的语法
python关键的语法 1.标准类型分类
- UT源码+019
设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角 ...
- mod_pagespeed
https://github.com/pagespeed/mod_pagespeed.git https://developers.google.com/speed/pagespeed/module/ ...
- SoapUI5.1.2安装和破解教程
一.SoapUI简介 soapui提供一个工具通过soap/http来检查,调用,实现web service和web service的功能/负载/符合性测试. 该工具既可作为一个桌面应用软件使用,也可 ...
- Hibernate与Jpa的关系
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA的总体思想和现有Hibernate.T ...
- 【加密算法】3DES
一.简介 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算 ...
- Eclipse设置代理
Windows->Preferences->General->Network Connections下面可以设置代理 如果要指定特定的代理地址,需要把类型改为Manual 通常htt ...
- PHP RBAC权限管理 基于角色的访问控制演示
RBAC rbac:Role Based Access Controll,基于角色的访问控制. 今天理一理RBAC,话不多说,直接切入主题 功能需求: 权限管理(无限极) 角色管理(可以分配权限) 管 ...
- 使用math.js进行javascript精确计算
javascript进行浮点运算会有尾差,比如算个0.1+0.7试试,得到的不是0.8 .这个问题可以使用math.js解决. Math.js是一款开源的JavaScript和Node.js数学库,用 ...