Solr单机部署和集群部署
用到的相关jar包:http://pan.baidu.com/disk/home#list/path=%2Fsolr
Solr目录结构
Solr 目录
Contrib :solr 为了增强自身的功能,所添加的扩展依赖包。
Dilst:solr build 过程时产生的jar包和war包,还有他的一些依赖包。
Docs: 文档。
Example: 例子
Solr:配置了solr运行至的信息,是一个标准的solrhome目录。
Collection1:solrcore目录
Data: 该目录是储存了索引的目录。
Multicore:可以配置多个solr实例。
Webapps: solr.war的目录
Licenses :版本
Solrhome
从example中copy出solr到新的一个目录,这就是一个solrhome了,可以改名。C:\QQDownload\Solrs\solr1\solrhome
Solrhome是一个目录,是solr运行的主目录,它包括多个solrcore目录。Solrcore目录中就是solr实例的运行配置文件和数据文件。
Solr容器
Solr部署到tomcat。
Solr需要运行在一个servlet容器,它默认提供了一个jetty容器。
把solrhome下webapps的solr.war复制到tomcat下的webapps目录下,解压并删除该war包。
添加solr依赖包,从目录solr-4.9.0\example\lib\ext 复制到 Tomcat 6.0-solr\webapps\solr\WEB-INF\lib
把solr-4.9.0 下的dist和contrib复制到solrhome\collection1\conf 下solrconfig.xml 中配置的相应路径中
依赖包有log4j,需要添加lofg4j的配置文件solr-4.9.0\example\resources 到 Tomcat 6.0-solr\webapps\solr\WEB-INF\classes(该文件夹需手动添加)。
添加sorl和tomcat的关联编辑 Tomcat 6.0-solr\webapps\solr\WEB-INF下的web.xml
添加映射关系,指定solrhome :<env-entry-value> C:\QQDownload\Solrs\solr1\solrhome </env-entry-value>
启动tomcat 看是否有错误。
遇到了solrconf.xml 的路径不对的问题,<lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../dist/" regex="solr-cell-\d.*\.jar" /> 修改dir 路径并从solr中复制contrilb和dlist目录到相应的位置
http://localhost:8080/solr/#/~logging看到正常solr界面就说明安装成功了。
Solr功能界面
分词器是需要配置的。
可以操作索引。 在solr中,修改或添加索引 都需要id主键。
配置多solrcore
多solrcore 配置:
Collection1,collection2
一个solr工程,配置多个solrcore 每个solrcore之间是相互独立的,可以单独对外提供服务。
类似于数据库,一个数据库可以后多个实例,如果有新需求,可以直接扩展。
多solrcore在管理索引文件时,可以进行分类管理。
使用solrcloud solr集群, 必须要建立多个solrcore。
复制solrhome下的collection1 到本目录下,改名为collection2.
修改collection2下的core.properties 修改为collection2 就ok了。
重启tomcat。
ok。两个solrcore 互相是独立的。
Schema.xml
Solr 基本使用
C:\QQDownload\Solrs\solr1\solrhome\collection1\conf
Schema.xml 文件在solrcore中的conf目录下,这个文件主要是配置域名及域的类型。
Solr 的域要先定义,后使用。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
Name:域名
Type:域的类型(也需要配置)
Indexed:是否索引
Stored:是否存储
Required:是否必须一般id才设置。
multiValued:是否可以多值。如果设置为多值,里面的值就采用数组方式存储。
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
配置动态域
Name:域名,该域通过一个正则指定。
<uniqueKey>id</uniqueKey>
指定一个主键域。每个文档中都应该有个唯一主键。
<copyField source="cat" dest="text"/>
复制域
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
Source :源域
Dest:目标域 把源域的内容复制到目标域,目标域必须设置 multiValued="true"
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
fieldType 配置域的类型
Name:域的类型的名称 引用该类型时: type=” text_general”
Class:指定solr的类型
Analyzer:配置分词器 type:index,query 索引,查询分词器
Tokenizer :分词器
Filter :过滤器
配置中文分词器IkAnalyzer
使用IkAnalyzer中文分词器
把IkAnalyzer2012ff_u1.jar添加到tomcat下的 web-inf/lib目录下
tomcat-6.0.35\apache-tomcat-6.0.35-solr\webapps\solr\WEB-INF\lib
复制IkAnalyzer的配置文件和自定义词典和停用词典到sorl的classpath下
Copy到apache-tomcat-6.0.35-solr\webapps\solr\WEB-INF\classes下
配置fieldtype 指定使用中文分词器。
打开C:\QQDownload\Solrs\solr1\solrhome\collection1\conf下的 scheme.xml文件
配置filed,使用中文分词器的filedtype。
业务域
Id是主键,由于collection1的scheme已经有主键了。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
Dataimporthandler 插件
把数据从关系数据库中查询并导入到索引库中。
solr-4.9.0\dist\ solr-dataimporthandler-4.9.0.jar
复制到
Solrs\solr1\contrib\dataimporthandler\lib
下载mysql-connector-java-5.1.7-bin
Mysql数据驱动包拷贝到
Solrs\solr1\contrib\db\lib 下,没有的目录需要手动新建
配置dataimporthandler
在目录\Solrs\solr1\solrhome\collection1\conf下创建data-config.xml文件。
如果是链接sqlserver 注意配置sql和mysql的jdbc驱动,在同一个文件夹下 <lib dir="../../contrib/db/lib" regex=".*\.jar" /> 默认的就使用了mysql 的驱动。
看取到的数据和生成索引的数据数量是否一致,可以查看日志。
看一下别人的增删改:http://www.cnblogs.com/madyina/p/4133908.html
Solrj代码操作solr索引 .net solrnet
添加solrj的jar包 ,
路径 \Solrs\solr1\dist\solrj-lib 下的是solrj的依赖包
新加Javaproject,添加相应的solrj对应的包。
把\solr-4.9.0\example\lib\ext 目录下的jar包也添加进项目
代码实现
添加,修改索引。
注意:solr中添加修改索引必须要有主键,主键已经存在就修改,不存在就添加。
删除索引
可以看到有多种删除方法。
已经成功删除
Solrj搜索
可以看到界面实现和代码实现差别不大。
Solr服务器
应用
数据库
SolrCloud 集群搭建
Zookeeper 管理和维护SolrCloud集群
1.安装java环境
把集群需要的文件上传到虚拟机
Zookeeper:http://blog.csdn.net/cjfeii/article/details/24706321
Solr下载地址: http://archive.apache.org/dist/lucene/solr/4.10.3/solr-4.10.3.tgz
1.安装centos
2.安装java 虚拟机
3.安装zookeeper 保证是基数节点,最少3个节点。
解压 tar -zxf zookeeper-3.4.6.tar.gz
4.配置zookeeper
在zookeeper1文件夹下 创建data文件夹
在data文件夹下创建myid文件 写入1. echo 1>>data/myid
以此类推,另外几个节点也同样配置。
创建配置文件。在conf文件夹下 zoo_sample.cfg 复制后改名 cp zoo_sample.cfg zoo.cfg,然后编辑vim zoo.cfg。编辑datadir节点dataDir=/user/local/solrcloud/zookerper1/data .
这里注意clientport节点,同一个机器不要重复了端口号。
添加server.1节点 server.1=1912.168.80.128:2881:3881
每个zookeeper节点都要有这个配置。
Clientport 是zookeeper对外提供服务的端口 2881 是zookeeper服务器内部通信的端口,3881是zookeeper投票的端口,不能重复。
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
"zoo.cfg" 28L, 922C1,1 顶端
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/user/local/solrcloud/zookerper1/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=1912.168.80.128:2881:3881
server.2=1912.168.80.128:2882:3882
server.3=1912.168.80.128:2883:3883
"zoo.cfg" 31L, 1050C 已写入
依次配置好zookeeper2,zookeeper3
5.启动zookeeper
Bin文件夹下内容
创建批量启动文件
也可以单个启动。
添加新建启动文件的执行属性。
6.查看zookeeper状态
./zkServer.sh status
Error contacting service. It is probably not running. 错误 查看zookeeper.out日志,分析错误原因。
添加了 批量启动和查看状态的执行文件
启动成功。
配置搭建solr
一定要注意jar包的版本
主要修改的配置文件:
1.tomcat1/conf/server.xml 如果是同一台服务器就需要修改端口,防止冲突。单台可以使用默认设置。
2.tomcat1/webapps/solr/WEB-INF/web.xml –修改配置solrhome的位置
3.solrhome1/collection1/solrconfig.xml 主要是修改指定dist和contrib目录和后续的插件jar包的路径
solrhome是从solr-4.10.3包下的/example/solr 目录复制的
tomcat 下webapps下的solr 是 solr-4.10.3下/example/solr下webapps的solr.war 解压出来的
安装配置tomcat
[root@supercentos1 download]# tar -zxf apache-tomcat-7.0.39.tar.gz安装tomcat
[root@supercentos1 download]# mv apache-tomcat-7.0.39 /user/local/solrcloud/tomcat/tomcat1
[root@supercentos1 tomcat]# cp -r tomcat1/ tomcat2 复制出来3个tomcat
[root@supercentos1 tomcat]# cp -r tomcat1/ tomcat3
[root@supercentos1 tomcat]# cp -r tomcat1/ tomcat4
[root@supercentos1 tomcat]# vim tomcat1/conf/server.xml 修改各个tomcat端口配置
安装配置solr
[root@supercentos1 download]# tar -zxf solr-4.10.3.tgz.tgz 解压
复制solr-4.10.3/example/solr 复制到solrcloud下的solr文件夹下新建solrhome。
把solrhome下webapps的solr.war复制到tomcat下的webapps目录下,解压并删除该war包。
[root@supercentos1 solr-4.10.3]# cp example/webapps/solr.war / user/local/solrcloud/tomcat/tomcat1/webapps/
[root@supercentos1 solr-4.10.3]# cd/user/local/solrcloud/tomcat/tomcat1/webapps/
unzip -oq solr.war-d solr
rm solr.war
解压后删除:
添加tomcat下solr依赖包
从目录 solr-4.10.3\example\lib\ext 复制到Tomcat1\webapps\solr\WEB-INF\lib 下
cp -rf example/lib/ext/*.jar /user/local/solrcloud/tomcat/tomcat1/webapps/solr/WEB-INF/lib
依赖包有log4j,需要添加lofg4j的配置文件solr-4.9.0\example\resources 到 Tomcat 6.0-solr\webapps\solr\WEB-INF\classes(该文件夹需手动添加)。
[root@supercentos1 solr-4.10.3]# cp -rf example/resources/log4j.properties/user/local/solrcloud/tomcat/tomcat1/webapps/solr/WEB-INF/classes/
然后把tomcat1下webapps下的sorl文件夹复制到每个tomcat目录下。
复制相应个数的solr和tomcat, 每个sorl都对应一个tomcat容器。
[root@supercentos1 download]# cp -r /user/local/solrcloud/tomcat/tomcat1/webapps/solr /user/local/solrcloud/tomcat/tomcat2/webapps/
修改tomcat下sorl工程web.xml文件
vim tomcat/tomcat1/webapps/solr/WEB-INF/web.xml 2,3,4也同样的步骤修改就行了
[root@supercentos1 solrcloud]# tomcat/tomcat1/bin/startup.sh 启动tomcat1
Solrhome配置
把solr-4.9.0 下的dist和contrib复制到 solrhome\collection1\conf 下solrconfig.xml 中配置的相应路径中
[root@supercentos1 solr-4.10.3]# cp -rf contrib /user/local/solrcloud/solr/ 这个需要在配置文件里配置,看是否对应
[root@supercentos1 solr-4.10.3]# cp -rf dist /user/local/solrcloud/solr/
Vim solrhome1/collection1/solrconfig.xml
集群搭建
主要修改solrhome下的solr.xml,关联tomcat的ip和对应端口号。
修改tomcat下的bin目录下的catalina.sh。关联zookerper服务器地址和端口。
1.修改solrhome下的solr.xml配置文件
2.使用zookeeper统一管理配置文件。需要把solrhome下的collection1下的conf文件夹上传到zookeeper。
3.执行/root/download/solr-4.10.3/example/scripts/cloud-scripts 下的
./zkcli.sh -zkhost 192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183 -cmd upconfig -confdir /user/local/solrcloud/solr/solrhome1/collection1/conf -confname myconf
./zkcli.sh -zkhost(zookeeper服务器) 192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183(zookeeper配置的服务器IP:clientProt) -cmd upconfig -confdir /user/local/solrcloud/solr/solrhome1/collection1/conf(管理的文件目录) -confname myconf(zookeeper管理别名)
4.执行/zookerper1/bin/zkCli.sh 链接到zookerper1
看到文件都传上了
5.关联zookerper和每一台solr。.告诉solr服务zookerper的位置
修改solr的tomcat下的bin目录下的catalina.sh文件,加入DzkHost 指定zookerper服务器的地址:vim tomcat1/bin/catalina.sh
添加
JAVA_OPTS="-DzkHost=192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183"
同样的修改各个solr的tomcat服务器。
6.重新启动tomcat ,zookerper。
7.集群配置成功,这里只是单片
出现这个错误就看下solrhome下的solr.xml的ip和端口是否正确了, catalina.sh文件是不是手抖改错地方了,坑爹的。。最好是配完一台后直接复制粘贴的靠谱。
创建有两片的collection
http://192.168.80.128:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
删除collection
http://192.168.80.128:8080/solr/admin/collections?action=DELETE&name=collection1
Dataimport插件
需要在每个节点都配置下,修改solrconfig.xml,把solrconfig.xml文件上传到zookerper。
把单机版的solrhome/collection1下的conf拷到本地下collection2_shard2_replica1 下。
上传到zookerper 覆盖原来的那个配置。
把dataimporthandler相关的jar包,和数据库mysql或者sqlserver的驱动包放到相应的位置,配置solrconfig.xml。因为我这个是放到了solrhome公用的目录下了,不用每个solrhome都配置了,要是多服务器就需要每台服务器都配置了。
执行/root/download/solr-4.10.3/example/scripts/cloud-scripts 下的
./zkcli.sh -zkhost 192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183 -cmd upconfig -confdir /user/local/solrcloud/solr/solrhome1/collection2_shard2_replica1/conf -confname myconf
配置中文分词器IkAnalyzer
重启tomcat
使用Solrj查询
String zkHost = "192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183";// zookerper地址
CloudSolrServer cloudSolrServer = new CloudSolrServer(zkHost);
// 指定默认链接的collection
cloudSolrServer.setDefaultCollection("collection2");
/// 设置查询条件
SolrQuery qSolrQuery = new SolrQuery();
// 跟上面一样,省略
QueryResponse cloudResponse = cloudSolrServer.query(qSolrQuery);
// 跟单机查询一样,省略。。
增删改查跟单机版的都一样
Solr tomcat zookeeper目录结构
Download 资源
/user/local/solrcloud/zookerper1,2,3
/user/local.solrcloud/tomcat/tomcat1,2,3,4
/user/local.solrcloud/solr/solr1,2,3,4
Solr单机部署和集群部署的更多相关文章
- 二进制方法-部署k8s集群部署1.18版本
二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...
- 二进制部署K8S-2集群部署
二进制部署K8S-2集群部署 感谢老男孩教育王导的公开视频,文档整理自https://www.yuque.com/duduniao/k8s. 因为在后期运行容器需要有大量的物理硬件资源使用的环境是用的 ...
- Windows下ELK环境搭建(单机多节点集群部署)
1.背景 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时 ...
- Zookeeper(一)-- 简介以及单机部署和集群部署
一.分布式系统 由多个计算机组成解决同一个问题的系统,提高业务的并发,解决高并发问题. 二.分布式环境下常见问题 1.节点失效 2.配置信息的创建及更新 3.分布式锁 三.Zookeeper 1.定义 ...
- 005.基于docker部署etcd集群部署
一 环境准备 ntp配置:略 #建议配置ntp服务,保证时间一致性 etcd版本:v3.3.9 防火墙及SELinux:关闭防火墙和SELinux 名称 地址 主机名 备注 etcd1 172.24. ...
- Elasticsearch单机双节点集群部署实战
一.安装第一个ElasticSearch(主节点) 1.创建es用户,启动es不能使用root用户 useradd es passwd es12 root用户进入/home/es目录下 2.获取Ela ...
- redis3.2.11单机多实例集群部署并测试连接情况
配置准备: redis3.2.11安装配置规划 机器 192.168.169.135(本机虚拟机) 系统 Red Hat Enterprise Linux Server release 6.4 (Sa ...
- Linux中Zookeeper部署和集群部署
自己网上下载安装包,我下载的是tar.gz安装包直接解压,也可以下载rpm格式 1.下载zookeeper安装包,放到/usr/local/zookeeper安装包网上下载 2.解压文件tar -zx ...
- Redis单台的安装部署及集群部署
Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(diff ...
随机推荐
- 【pku2115-C Looooops】拓展欧几里得-不定方程
http://poj.org/problem?id=2115 题解:一个变量从A开始加到B,每次加C并mod2^k,问加多少次.转化为不定方程:C*x+2^K*Y=B-A //poj2115 #inc ...
- 【hdu1573-X问题】拓展欧几里得-同余方程组
http://acm.hdu.edu.cn/showproblem.php?pid=1573 求小于等于N的正整数中有多少个X满足: X mod a0 = b0 X mod a1 = b1 …… X ...
- BestCoder 1st Anniversary($) 1003 Sequence
题目传送门 /* 官方题解: 这个题看上去是一个贪心, 但是这个贪心显然是错的. 事实上这道题目很简单, 先判断1个是否可以, 然后判断2个是否可以. 之后找到最小的k(k>2), 使得(m-k ...
- C#文件输入输出流
从输入流中读取数据(行读取字符串) using System; using System.Collections.Generic; using System.Linq; using System.Te ...
- python_pycharm介绍1
1. 常用设置 修改编程风格 File-Setting中,Editor下Colors&Fonts修改即可调整风格. 修改字体大小 pycharm默认字体太小,需调整些,Settings--&g ...
- 让浏览器屏蔽js
有时候为了测试js是否做到了渐进增强,需要屏蔽下js 做法: Internet选项>>安全>>自定义级别 禁用java小程序脚本和活动脚本 有的浏览器调试器直接就有这个功能
- Java:集合框架的工具类
集合框架的工具类 Arrays:里面都是静态方法,直接用来对各种集合进行操作的公有方法. Collections:里面都是静态方法,直接用来对各种集合进行操作的公有方法. 包括: 1.asList将数 ...
- J2ee 巴巴网站制作(一)
用户模块图:
- Oracle ->> 随机函数
SQL SERVER下生成随机数据干得多,可是到了Oracle下我就傻了.没用过Oracle,不知道该怎么办?SQL SERVER下依靠TABLESAMPLE或者CHECKSUM(NEWID())来做 ...
- MyBatis实现SaveOrUpdate
这篇文章主要讲如何通过xml方式实现SaveOrUpdate,但是仍然建议在Service中实现. 例子 <insert id="saveOrUpdate" > < ...