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

[[email protected] download]# tar -zxf apache-tomcat-7.0.39.tar.gz安装tomcat

[[email protected] download]# mv apache-tomcat-7.0.39 /user/local/solrcloud/tomcat/tomcat1

[[email protected] tomcat]# cp -r tomcat1/ tomcat2 复制出来3个tomcat

[[email protected] tomcat]# cp -r tomcat1/ tomcat3

[[email protected] tomcat]# cp -r tomcat1/ tomcat4

[[email protected] tomcat]# vim tomcat1/conf/server.xml 修改各个tomcat端口配置

安装配置solr

[[email protected] 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包。

[[email protected] solr-4.10.3]# cp example/webapps/solr.war / user/local/solrcloud/tomcat/tomcat1/webapps/

[[email protected] 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(该文件夹需手动添加)。

[[email protected] 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容器。

[[email protected] 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也同样的步骤修改就行了

[[email protected] solrcloud]# tomcat/tomcat1/bin/startup.sh 启动tomcat1

Solrhome配置

把solr-4.9.0 下的dist和contrib复制到 solrhome\collection1\conf 下solrconfig.xml 中配置的相应路径中

[[email protected] solr-4.10.3]# cp -rf  contrib /user/local/solrcloud/solr/  这个需要在配置文件里配置,看是否对应

[[email protected] 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

时间: 2024-10-31 20:44:58

Solr单机部署和集群部署的相关文章

Eureka 单机部署与集群部署

一.Eureka单机版搭建 Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中,搭建Eureka Server的方式还是非常简单的.只需要通过一个独立的maven工程即可搭建Eureka Server.pom依赖如下: 二.Eureka集群版搭建 原文地址:https://www.cnblogs.com/myitnews/p/12398347.html

ActiveMQ的单节点和集群部署

平安寿险消息队列用的是ActiveMQ. 单节点部署: 下载解压后,直接cd到bin目录,用activemq start命令就可启动activemq服务端了. ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服务,执行以下命令以便检验是否已经成功启动ActiveMQ服务: ps -aux | grep activemq netstat -anp | grep 61616 此外,还可直接访问管理页面:http://ip:8161/admin/ ,用户名和密码可以

浅入深出ETCD之【集群部署与golang客户端使用】

前言 之前说了etcd的简介,命令行使用,一些基本原理.这次来说说现实一点的集群部署和golang版本的客户端使用.因为在实际使用过程中,etcd的节点肯定是需要2N+1个进行部署的,所以有必要说明一下集群的部署. 集群部署 网上有很多集群部署的教程,有的很复杂,其实对于我们实际使用来说,其实配置并不复杂,下面举例一种最简单的集群配置.(简单到你想不到~) 下载 https://github.com/etcd-io/etcd/releases 还是在github上面找到需要下载的版本 我使用的是

Zeebe服务学习3-Raft算法与集群部署

1.背景Zeebe集群里面保证分布式一致性问题,是通过Raft实现的,其实这个算法用途比较广泛,比如Consul网关,也是通过Raft算法来实现分布式一致性的. 首先简单介绍一下Raft: 在学术界,解决分布式一致性最耀眼的算法是Paxos,同时,这个算法也是最晦涩.而Raft算法就是基于这个背景被提出来,相对Paxos,Raft比较容易上手. 2.Raft算法介绍 集群每个节点都有三个状态:Follower,Leader,Candidate(Leader候选人)三个状态之间是可以互换的. 集群

solr 集群(SolrCloud 分布式集群部署步骤)

SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux 环境的 64位 软件,以上软件请到各自的官网下载. 服务器准备 为搭建这个集群,准备三台服务器,分别为 192.168.0.2 -- master 角色192.168.0.3 -- slave 角色192.168.0.4 -- slave 角色 搭建基础环境 安装 jdk1.7 - 这个大家都会安装

单机模拟分片为复制集的集群部署

概述 可使用单个数据服务器作为分片,也可使用复制集作为分片. 复制集为具有自动故障恢复功能的主从集群,并且其主从角色可自动变更. 每个复制集包括3种角色:主服务器.从服务器.仲裁服务器 部署图 部署过程 Shard1(为1个复制集) Shard2(为1个复制集) ConfigServer ConfigA ConfigB RouteServer 先启动 再配置 单机模拟分片为复制集的集群部署

Redis基本概念、基本使用与单机集群部署

1. Redis基础 1.1 Redis概述 Redis是一个开源.先进的key-value存储,并用于构建高性能.可扩展的应用程序的完美解决方案. Redis从它的许多竞争继承了三个主要特点:   ①Redis数据库完全在内存中,使用磁盘仅用于持久性:   ②相比许多键值对数据存储,Redis拥有一套较为丰富的数据类型:   ③Redis可以将数据复制到任意数据量的从服务器: 1.2 Redis优势 异常快速:Redis的速度非常快,每秒能执行约11万次set操作,每秒约81000次get操作

zookeeper(单机、伪集群、集群)部署

ZooKeeper是一个分布式的.开源的分布式应用程序协调服务,可以在分布 式环境中实现应用配置管理.统一命名服务.状态同步服务等功能.ZooKeeper是一种为分布式应用所设计的高可用.高性能的开源协调服务,它提供了一项基本服务:分布式锁 服务.由于ZooKeeper开源的特性,在其分布式锁实现的基础上,又被摸索出了其它的功用,譬如:配置维 护.组服务.分布式消息队列等等. ZooKeeper维护了一个类似文件系统的数据结构,其内部每个子目录都被 称作znode(目录节点),与文件系统一样,我

使用docker安装部署Spark集群来训练CNN(含Python实例)

使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器,每台有8个tesla-GPU,然而平时做实验都只使用了其中的一个GPU,实在暴遣天物! 于是想用spark来把这些GPU都利用起来.听闻d