Solr的集群搭建,
/ ******************全文搜索引擎简介****************** /
1信息源 - >本地(进行加工和处理) - >建立索引库(信息集合,一组文件的集合)
2搜索的时候从本地的(索引库)信息集合中搜索
3文本在建立索引和搜索时,都会先进行分词(使用分词器)
4索引的结构:
索引表(存放具体的词汇,哪些词汇再那些文档里存储,索引里存储的就是分词器分词之后的结果)
存放数据(文档信息集合)
5用户搜索时间:首先经过分词器进行分词,然后去索引表里查找对应的词汇(利用倒排序索引),再找到对应的文档集合
6索引库位置(目录)
7信息集合里的每一条数据都是一个文件(存储所有信息,他是一个Filed属性的集合)
8 store是否进行存储(可以不存储,也可以存储)
9指数是否进行存储(可以不索引,也可以索引,索引的话分为分词后索引,或者直接索引)
/ ******************** solr安装与使用******************** /
Solr的下载地址是:http://archive.apache.org/dist/lucene/solr/
安装Solr的与Tomcat的集成:Linux的环境CentOS6.4,Tomcat7.0,Solr4.10.3
安装步骤:
解压Solr:tar -zxvf solr-4.10.3.tgz.tar
进入目录:cd solr-4.10.3 / example / webapps /
拷贝其下war文件到tomcat的webapps中:cp solr.war /usr/local/apache-tomcat-7.0.29/webapps/
解压Solr:mkdir solr && unzip solr.war -d solr && rm -rfsolr.war
修改解压好的solr文件夹,修改其文件:vim solr / WEB-INF / web.xml,查找到env-entry内容,解开注释文本。并修改solr / home的地址:/ usr / local / solr- 4.10.3 /示例/ solr的。保存并退出即可。
拷贝相关jar包到tomcat下:cd /usr/local/solr-4.10.3/example/lib/ext && cp * / usr / local / apache-tomcat-7.0.29 / lib /
启动tomcat的即可:/usr/local/apache-tomcat-7.0.29/bin/startup.sh
查看日志:尾巴-500 /usr/local/apache-tomcat-7.0.29/logs/catalina.out
通过浏览器访问:HTTP://地址:8080 / solr的,看到solr的主页即可。
/ ********************中文分词器安装******************** /
无论是Solr的还是Lucene的,都对中文分词不支持,所以我们一般索引中文的话需要使用IK中文分词器。
下载:IK Analyzer 2012FF_hf1.zip
进行解压:
安装:把IKAnalyzer2012FF_u1.jar拷贝到Tomcat的Solr中的应用服务下:
cd / usr / local / software && cpIKAnalyzer2012FF_u1.jar / usr / local / apache-tomcat-7.0.29 / webapps / solr / WEB-INF / lib /
创建文件夹:/usr/local/apache-tomcat-7.0.29/webapps/solr/WEB-INF/classes
把IKAnalyzer.cfg.xml和stopword.dic拷贝到新创建的类目录下即可。
修改solr core的schema文件,默认是位置:
vim /usr/local/solr-4.10.3/example/solr/collection1/conf/schema.xml
添加如下配置:
<fieldType name =“text_ik”class =“solr.TextField”>
<! - 索引时候的分词器 - >
<analyzer type =“index”isMaxWordLength =“false”class =“org.wltea.analyzer.lucene.IKAnalyzer”/>
<! - 查询时候的分词器 - >
<analyzer type =“query”isMaxWordLength =“true”class =“org.wltea.analyzer.lucene.IKAnalyzer”/>
</字段类型>
修改中文分词器
/usr/local/apache-tomcat-7.0.29/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml
解开进入注解
再stopWord.Dic同级目录下创建ext.dic,在ext.dic中加入你要添加的文字即可。
/ ******************** solr全量,增量更新url地址******************** /
/ ******************** solr全量更新******************** /
第一步:创建数据库solr,然后建立一张表测试,插入几条数据即可(见docs下的solr.sql文件,创建solr数据库,表,倒入数据)
第二步:/usr/local/solr-4.10.3/example/solr/collection1/conf/solrconfig.xml对这个文件进行编辑:
命令:vim /usr/local/solr-4.10.3/example/solr/collection1/conf/solrconfig.xml
添加内容:
<requestHandlername =“/ dataimport”class =“org.apache.solr.handler.dataimport.DataImportHandler”>
<lst name =“defaults”>
<str name =“config”> data-config.xml </ str>
</ LST>
</ requestHandler>
第三步:新建一个数据-config.xml的文件,与solrconfig.xml中同一个目录下:
命令:VIM的/ usr /本地/ solr的-4.10.3 /示例/ solr的/ collection1 / CONF /数据-config.xml中
添加内容:” URL使用的是本地的Windows”上的IP地址
<dataConfig>
<dataSource type =“JdbcDataSource”
驱动= “com.mysql.jdbc.Driver”
URL = “JDBC:MySQL的://192.168.31.65:3306 / solr的”
用户=“根”
password =“root”/>
<文档>
<entity name =“test”transformer =“DateFormatTransformer”
query =“SELECT id,subject,content,last_modified FROM test WHEREid> = $ {dataimporter.request.id}”>
<field column =“id”name =“id”/>
<field column =“subject”name =“subject”/>
<field column =“content”name =“content”/>
<field column =“last_modified”name =“last_modified”dateTimeFormat =“yyyy-MM-ddHH:mm:ss”/>
</实体>
</文件>
</ dataConfig>
第四步:添加的jar包到Tomcat的的项目中:
1.首先是在USR /本地/ solr的-4.10.3 / DIST目录下找到的solr倒入数据相关的罐包
命令:cd /usr/local/solr-4.10.3/dist && cpsolr-dataimporthandler-4.10.3.jar solr-dataimporthandler-extras-4.10.3.jar / usr / local / apache-tomcat-7.0.29 / webapps / solr的/ WEB-INF / LIB /
2.当然还需要添加的MySQL驱动罐到Tomcat的7.0.29 / web应用/ solr的/ WEB-INF / LIB /之中才行
第五步:编辑/usr/local/solr-4.10.3/example/solr/collection1/conf/schema.xml配置文件,去把数据库里面有的字段,添加到schema.xml中中,如果有则无需配置。
命令:vim /usr/local/solr-4.10.3/example/solr/collection1/conf/schema.xml
第六步:进行数据库访问授权操作,本地的MySQL的需要得到授权:
1:GRANT ALL PRIVILEGESON *。* TO'root'@'%'标识为'root'WITH GRANT OPTION;
2:FLUSH PRIVILEGES;
第七步:Solr的服务器的时间应该与MySQL的服务器的时间一致
linux修改系统时间:date -s“2016-04-15 20:23:00”
第八步:通过HTTP请求的全量更新URL访问MySQL的数据源倒入数据:
一次性访问全量更新的网址:
http://192.168.1.171:8080/solr/collection1/dataimport?command=full-import&clean=true&commit=true&wt=json&indent=true&entity=test&verbose=false&optimize=false&debug=false&id=1
/ ******************** solr增量更新******************** /
PS:前面我的文章DIH全量导入中已经学会了如何全量导入Oralce和MySQL的数据,大家都知道全量导入在数据量大的时候代价非常大,
一般来说都会适用增量的方式来导入数据,下面介绍如何增量导入MYSQL数据库中的数据,以及如何设置定时来做。
下面介绍的所有操作都是基于前面已经完成的全量导入的基础上来做的。
还记得我们之前在数据库表里面有一个last_modify字段,有了这样一个字段,Solr的才能判断增量导入的时候,哪些数据是新的。
因为Solr的本身有一个默认值last_index_time,
记录最后一次做全进口或者是delta import(增量导入)的时间,
这个值存储在文件的conf目录的dataimport.properties文件中:全路径如下:
vim /usr/local/solr-4.10.3/example/solr/collection1/conf/dataimport.properties
数据-config.xml文件中必要属性的设置:
<! - 变压器格式转化:HTMLStripTransformer索引中忽略HTML标签--->
<! - 查询:查询数据库表符号记录数据--->
<! - deltaQuery:增量索引查询主键ID --->注意这个只能返回ID字段
<! - deltaImportQuery:增量索引查询导入的数据--->
<! - deletedPkQuery:增量索引删除主键ID查询--->注意这个只能返回ID字段
修改:/usr/local/solr-4.10.3/example/solr/collection1/conf/data-config.xml
<dataConfig>
<dataSource type =“JdbcDataSource”
驱动= “com.mysql.jdbc.Driver”
URL = “JDBC:MySQL的://192.168.1.200:3306 / solr的”
用户=“根”
password =“root”/>
<文档>
<entity name =“test”pk =“id”transformer =“DateFormatTransformer”
query =“SELECT id,subject,content,last_modified FROM test WHEREid> ='$ {dataimporter.request.id}'”
deltaImportQuery =“SELECT * FROM testwhere id ='$ {dih.delta.id}'”
deltaQuery =“SELECT id FROM test where last_modified>'$ {dataimporter.last_index_time}'”>
<field column =“id”name =“id”/>
<field column =“subject”name =“subject”/>
<field column =“content”name =“content”/>
<field column =“last_modified”name =“last_modified”dateTimeFormat =“yyyy-MM-ddHH:mm:ss”/>
</实体>
</文件>
</ dataConfig>
对于上面的操作解释:
意思是首先按照查询指定的SQL语句查询出符合条件的记录。
然后从这些数据中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。
最后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。
核心思想是:通过内置变量 “$ {} dih.delta.id” 和 “$ {} dataimporter.last_index_time” 来记录本次要索引的ID和最近一次索引的时间。
注意:LAST_MODIFIED字段也要在现场属性中配置,同时也要在schema.xml中文件中配置:
<field name =“last_modified”type =“date”indexed =“true”stored =“true”/>
最后:定时访问增量更新的网址:
http://192.168.1.171:8080/solr/collection1/dataimport?command=delta-import&entity=test
----------------------------------------------- solrcloud集群搭建-------------------------------------------------
一,动物园管理员集群
1,环境要求
的CentOS-6.5-I386彬DVD1.iso
JDK-7u72-Linux的i586.tar.gz
Apache的Tomcat的7.0.47.tar.gz
动物园管理员-3.4.6.tar.gz
Solr的-4.10.3.tgz
2,安装步骤
第一步:需要安装JDK环境。
第二步:把饲养员的压缩包上传到服务器。
第三步:解压缩。
第四步:把动物园管理员复制三份。
[root @ localhost〜]#mkdir / usr / soft / solrcloud
[root @ localhost〜]#cp -r zookeeper-3.4.6 / usr / solr / solrcloud / zookeeper01
[root @ localhost〜]#cp -r zookeeper-3.4.6 / usr / solr / solrcloud / zookeeper02
[root @ localhost〜]#cp -r zookeeper-3.4.6 / usr / solr / solrcloud / zookeeper03
第五步:在每个zookeeper目录下创建一个数据目录.mkdir数据
第六步:在数据目录下创建一个身份识别码文件,文件名就叫做“本身份识别码”内容就是每个实例的ID例如1,2,3。
[root @ localhostdata]#echo 1 >> myid
[root @ localhostdata]#ll
共4
-rw-r - r - 。1根根2 4月7日18:23 myid
[root @ localhostdata]#cat myid
1
第七步:修改配置文件。把conf目录下的zoo_sample.cfg文件改名为zoo.cfg(cpzoo_sample.cfg zoo.cfg)对zoo.cfg编辑
vimzoo.cfg
你本机的存储路径{DATADIR =的/ usr /软/ solrcloud / zookeeper1 /数据}
动物园管理员的端口号{CLIENTPORT = 2181}
加入服务{
server.1 = 192.168.79.131:2881:3881
server.2 = 192.168.79.131:2882:3882
server.3 = 192.168.79.131:2883:3883
}
vimstart-zookeeper.sh
cdzookeeper1 /箱
./zkServer.shstart
光盘../../
cdzookeeper2 /箱
./zkServer.shstart
光盘../../
cdzookeeper3 /箱
./zkServer.shstart
光盘../../
赋予权限
chmodu + x start-zookeeper.sh
第八步:启动每个饲养员实例。
启动./start-zookeeper.sh
查看动物园管理员的状态:
zookeeper1 / bin / zkServer.sh状态
-------------------------------------------------- ------------- Solr的集群----------------------------------- ------------------
3,Solr的集群的搭建,
第一步:创建四个tomcat实例。每个tomcat运行在不同的端口.8005 8009都要改
cp -r apache-tomcat-7.0.75 / usr / soft / solrcloud / tomcat1
cp -r apache-tomcat-7.0.75 / usr / soft / solrcloud / tomcat2
cp -r apache-tomcat-7.0.75 / usr / soft / solrcloud / tomcat3
cp -r apache-tomcat-7.0.75 / usr / soft / solrcloud / tomcat4
第二步:部署的Solr的战争包把单机版的Solr的工程复制到集群中的tomcat的中.8180,8280,8380,8480
cp solr.war / usr / soft / solrcloud / tomcat1 / webapps /
cp solr.war / usr / soft / solrcloud / tomcat2 / webapps /
cp solr.war / usr / soft / solrcloud / tomcat3 / webapps /
cp solr.war / usr / soft / solrcloud / tomcat4 / webapps /
第三步:为每个Solr的实例创建一个对应的solrhome使用单机版的solrhome复制四份。
cp -r / usr / soft / solr-4.10.3 / example / solr / usr / soft / solrcloud / solrhome1
cp -r / usr / soft / solr-4.10.3 / example / solr / usr / soft / solrcloud / solrhome2
cp -r / usr / soft / solr-4.10.3 / example / solr / usr / soft / solrcloud / solrhome3
cp -r /usr/soft/solr-4.10.3/example/solr / usr / soft / solrcloud / solrhome4
第四步:需要修改的Solr的web.xml文件文件把solrhome关联起来。
cd / usr / soft / solrcloud / tomcat1 / webapps / solr / WEB-INF / vim web.xml
你Solr的源文件的位置也就是solrhome
第五步:配置solrCloud相关的配置每个solrhome下都有一个solr.xml,把其中的IP及端
cd / usr / soft / solrcloud / solrhome1 vim solr.xml
cd / usr / soft / solrcloud / solrhome2 vim solr.xml
cd / usr / soft / solrcloud / solrhome3 vim solr.xml
cd / usr / soft / solrcloud / solrhome4 vim solr.xml
第六步:修改tomcat / bin目录下的catalina.sh文件,关联solr和zookeeper。
把此配置添加到配置文件中:四个Tomcat的都要改
/ usr / soft / solrcloud / tomcat1 / bin vim catalina.sh
在这个位置加上:
JAVA_OPTS = “ - DzkHost = 192.168.79.131:2181,192.168.79.131:2182,192.168.79.131:2183”
vim start-tomcat.sh
cdtomcat1 /箱
./startup.sh
光盘../../
cdtomcat2 /箱
./startup.sh
光盘../../
cdtomcat3 /箱
./startup.sh
光盘../../
cd tomcat4 / bin
./startup.sh
光盘../../
赋予权限
chmodu + x start-tomcat.sh
启动每个饲养员实例。
启动./start-tomcat.sh
第七步:
1,CD / USR /软/ solr的-4.10.3 /示例/脚本/云的脚本
2,。/ zkcli.sh -zkhost 192.168.79.131:2181,192.168.79.131:2182,192.168.79.131:2183-cmd upconfig -confdir / usr / soft / solrcloud / solrhome1 / collection1 / conf -confnamemyconf
连接动物园管理员客户端查看
链接动物园管理员的命令
3,。/ zkCli.sh -server192.168.79.131:2181
4,SolrCloud创建集合的命令
http://192.168.79.131:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
5,SolrCloud删除集合的命令
http://192.168.79.131:8180/solr/admin/collections?action=DELETE&name=collection1