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 ...
随机推荐
- matlab 降维工具箱
Matlab Toolbox for Dimensionality Reduction 降维方法包括: Principal Component Analysis (PCA) • Probabili ...
- c# AOP编程:Context与方法拦截
之前做AgentBooking时候,遇到两个问题比较棘手,一个是异常的传递与捕获:如何可以合理地在层层代码调用中统一传递并统一捕获异常.因为如果有一个做法,可以地方统一处理异常,可以使代码减少很多tr ...
- [LeetCode 题解] Search in Rotated Sorted Array
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 题目描述 Suppose an array ...
- Docker技术:在微软云Azure上使用K8S
周末,受微软公司的邀请,参加微软主持的云容器培训会议,为参加培训的学院提供技术辅导,引导学员体验微软云端的DevOps实践. 说是辅导,实际上自己也学到了许多的内容,包括K8S集群.负载.Azure中 ...
- NLayerAppV3-Infrastructure(基础结构层)的Data部分和Application(应用层)
回顾:NLayerAppV3是一个使用.net 2.1实现的经典DDD的分层架构的项目. NLayerAppV3是在NLayerAppV2的基础上,使用.net core2.1进行重新构建的:它包含了 ...
- 构建NetCore应用框架之实战篇系列
构建NetCore应用框架之实战篇 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建Net ...
- c# 输入姓名直到输入的是quit时,停止输入然后显示出输入的姓名个数及姓名
1.输入姓名直到输入的是quit时(不区分大小写),停止输入然后显示出输入的姓名个数及姓名: 要求结果如下图所示: class Program { static void Main(string[] ...
- AJPFX的监管与执照
AJPFX受到英国金融行为监管局(FCA)授权和监管. 英国FCA是目前世界上金融服务最完善.最健全的监管机构,英国FCA对所有在其境内注册的金融服务机构进行严格的监管. 英国金融行为监管局(FC ...
- 740. Delete and Earn
Given an array nums of integers, you can perform operations on the array. In each operation, you pic ...
- chrome浏览器本地文件支持ajax请求的解决方法
.右键chrome的快捷键--->点击属性 .在快捷方式的选项卡的目标里末尾填上如下内容: --allow-file-access-from-files 要关闭所有的chrome打开的网页