Solr multicore配置
Solr继续学习中,感觉Solr的multicore主要用途有两个:
1、充分利用服务器资源。在一台服务器上部署不用的搜索应用。
2、提高一个应用服务能力,在服务器上同时部署同一个应用的多个core,这些core共用一份索引数据(对Solr的运行机制不了解,不知道Solr并发能力怎么样)。
在基于Solr的列车时刻表查询服务基础上,我又搭建了一个身份证区域查询服务。这两个服务分别放在两个core中。Solr中配置多core是非常简单的,只要将example/multicore拷贝到某个目录,然后设置”-Dsolr.solr.home=/path/to/multicore”。每个core有自己的schema.xml和solrconfig.xml文件。通过下面这个url可以看到所有的core列表。
这个身份证区域查询服务可以通过身份证号码中的区位码查询其对应的地区,也可以根据地区名查询其区位码。这里就需要对中文进行分词,可以使用Solr内置的CJK分词器来简单地做分词(2-gram)。另外我要将用户搜索记录保存到日志中,对于互联网应用来说,搜索日志是宝贵的资源,感觉Solr对这块支持还比较薄弱。
1、CJK分词。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<? xml version = "1.0" encoding = "UTF-8" ?>
< schema name = "example" version = "1.2" >
< types >
< fieldType name = "sint" class = "solr.SortableIntField" sortMissingLast = "true" omitNorms = "true" />
< fieldtype name = "cjktext" class = "solr.TextField" >
< analyzer >
< tokenizer class = "solr.CJKTokenizerFactory" />
</ analyzer >
</ fieldtype >
</ types >
< fields >
< field name = "region_id" type = "sint" indexed = "true" stored = "true" />
< field name = "region_name" type = "cjktext" indexed = "true" stored = "true" />
</ fields >
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
< defaultSearchField >region_id</ defaultSearchField >
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
< solrQueryParser defaultOperator = "OR" />
</ schema >
|
2、保存日志。参考Solr 使用 Log4j。发现最后产生的日志信息太多了,要想想怎么将查询日志和操作日志分离开。
需求:
1. 实现SOLR主,辅服务器更新同步,每次客户端COMMIT请求都会及时应用在辅服务器上。
2. 实现MULTICORE,实际生产环境中往往会有多个搜索应用实例。
步骤:
一、准备条件
1. 服务器准备
准备两台服务器:
一台用作主服务器(192.168.0.36),负责分发索引
另一台负责辅服务器(192.168.0.46),负责承载搜索服务。
2.软件环境
Linux版本不限,32,64位不限
应用容器:TOMCAT 6.0
JAVA版本:JDK1.6以上版本
Solr应用环境目录: /solr/video/ (可使用ln –s 创建软连接) 和 /solr/album/ (本例设定为两个应用:实际情况可自由增减 )
Solr索引目录:/solr/data /album 和 /solr/data/video
3. 划分应用
本例中划分两个应用 专辑 album 和 视频 video
4. 基础目录创建(主,辅均需配置)
a)在 /solr/ 应用环境目录下创建两个目录:album 和 video
b)分别将SOLR安装目录下Solr/example/solr/conf文件夹至这两个目录
c)分别复制安装目录solr/src/scripts文件夹至 album 和 video目录,并将script改名为bin(后续要用到)
d)按照特定需求分别修改索引字段结构文件: schema.xml(有关此文件的配置不再撰述) e)复制 Solr/example/multicore 下的solr.xml文件至 应用环境根目录:/solr/ f)创建索引目录 /solr/data/album 和 /solr/data/video
二、 配置MULTICORE(主,辅均需配置)
划分业务类型,如做一个视频搜索引擎需要专辑和视频两大应用,则:
1)配置SOLR业务类型:在 /solr/下 编辑solr.xml文件
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
修改为
<core name="album" instanceDir="album" />
<core name="video" instanceDir="video" />
2)指定索引目录,进入/solr/album/conf目录,打开编辑器修改solrconfig.xml,找到
<dataDir> 节点,将真正的目录“/solr/data/album”替换掉原有数据。(视频应用步骤与此相同。)
三、 配置分布式应用(以下均在主服务器上配置)
1) 分别修改分布式分发脚本: scripts.conf
(/solr/album/bin 和 /solr/video/bin)
#触发外部命令所使用的用户
user=haiting
#本地机器名
solr_hostname=localhost
#本地SOLR开放的端口(及TOMCAT 服务端口)
solr_port=9001
#分发脚本使用的RSYNC服务端口,业务端口要区分开,在本例中,album为19001,video为19002,客户端与服务端端口设置需一致,否则会导致SNAPPULLER过程失败。 rsyncd_port=19001
#索引文件路径
data_dir=/solr/data/album
#TOMCAT容器中SOLR服务名(默认不变)
webapp_name=solr
#主服务器IP(主与辅同配置)
master_host=192.168.0.46
#主服务器索引文件路径
master_data_dir=/solr/data/album
#主服务器状态过程日志存放目录
master_status_dir=/solr/status/album
2)修改脚本所在默认路径
(通过修改scripts-util公用脚本实现)
找到该文件所在路径:/solr/album/bin和/solr/video/bin
第27行
confFile=${solr_root}/conf/scripts.conf
修改为:
confFile=/solr/bin/album/conf/scripts.conf
和
confFile=/solr/bin/video/conf/scripts.conf
注明:不进行此步骤会造成SOLR外部调用监听器执行会失败(/solr/)
3)修改主配置文件solrconfig.xml
找到以下目录:/solr/album/conf和 /solr/video/conf
分别修改两个应用的 COMMIT监听器,使得SOLR接收到COMMIT请求时,自动调用外
部命令snappuller
找到 postCommit 节点,配置后的节点如下所示:
<listener event="postCommit" class="solr.RunExecutableListener">
<str name="exe">/solr/video/bin/snapshooter</str>
<str name="dir">.</str>
<bool name="wait">true</bool>
<arr name="args"> <str>-d</str> <str>/solr/data/video</str> </arr>
<arr name="env"> <str>MYVAR=val1</str> </arr>
</listener>
注明:每一个应用对应的配置文件都需要配置,包括外部命令的目录.
四、配置、执行分发脚本
1.主服务器
1)启动SOLR
2)启用RSYNC
手工执行脚本:
/solr/video/bin/rsyncd-enable –v
说明:-v终端打印执行详细日志
3)开启RSYNC
/solr/video/bin/rsyncd-start –v
2.客户端
推荐使用SolrJ(目录位于/solr/src/solrj)
a)将SOLR接收URL改为:http://192.168.0.36:9001/solr/video
(或http://192.168.0.36:9001/solr/album )
b)执行发送命令,将数据推送至主服务器
3.辅服务器
a)配置清理脚本
su haiting
crontab –e
0 0 * * * /solr/album/bin/snapcleaner -D 7
0 0 * * * /solr/video/bin/snapcleaner -D 7
说明:系统每7天调用一次清理脚本,清理不用的快照
b)启用快照
手动执行
/solr/video/bin/snappuller-enable -v
c)获取并安装快照
配置cron
su haiting
crontab –e
*/5 * * * * /solr/video/bin/snappuller;/solr/video/bin/snapinstaller
*/5 * * * * /solr/album/bin/snappuller;/solr/album/bin/snapinstaller
说明:系统每五分钟调用一次smappuller和 snapinstaller,及每五分钟生效一次。
本文补充: 因SOLR的复制分发模式所需要的脚本没有考虑到 MULTICORE模块存在,所以在两种并行的情况下会造成快照安装失败,报 logMessage snapshot installed but Solr server has not open a new Searcher 错误。
具体修改方法: 在/solr/album/bin 和 /solr/video/bin 下修改commit文件,
将第三页中的 curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update
修改成 curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/album/update 保存即可。
三亿文库3y.uu456.com包含各类专业文献、高等教育、幼儿教育、小学教育、中学教育、应用写作文书、各类资格考试、行业资料、专业论文、生活休闲娱乐、solr 分布式部署59等内容。
相关推荐
ik-analyzer分词器,支持solr5-5.x
solr-mongo-importer-1.1.0.jar solr-mongo-importer-1.1.0.jar solr-mongo-importer-1.1.0.jar
Solr7是其第七个主要版本,引入了许多新特性和性能优化。 IK Analyzer,全称为“IntelligentKeyword Analyzer”,是一个为Java设计的高性能中文分词器。它最初是基于Lucene的Analyzer实现,现在也支持Solr等其他...
本项目"ik-analyzer-solr5-master.zip"是IK Analyzer针对Solr5的特别修正版,确保与该版本的Solr完美兼容。它是一个基于Maven构建的工程,方便开发者将其安装到个人的Maven仓库中,便于项目集成和管理。 **一、IK ...
总的来说,"solr6--solr-dataimporthandler-scheduler-1.1"项目为Solr6提供了强大的定时数据导入功能,能够帮助用户轻松管理和维护实时更新的索引,从而提升搜索应用的效率和用户体验。通过深入理解DIH的工作原理和...
solr-import-export-json最新代码solr-import-export-json最新代码solr-import-export-json最新代码solr-import-export-json最新代码solr-import-export-json最新代码solr-import-export-json最新代码solr-import-...
使用 `solr-dataimport-scheduler`,你需要在 Solr 的配置文件中定义调度器和数据源,指定数据源的连接参数、查询语句以及导入的字段等。同时,你还需要配置调度器的触发时间和频率,这通常在 `solrconfig.xml` 和 `...
这个压缩包中的主要文件"apache-solr-dataimportscheduler-1.0.jar"包含了实现这一功能所需的全部Java类和资源。 在Solr中,数据导入通常通过DataImportHandler (DIH) 完成,DIH是一个插件,负责从外部数据源(如...
通过深入研究`solr-9.0.0-src.tgz`源码,开发者可以理解Solr的工作原理,定制自己的搜索解决方案,解决特定场景下的性能挑战,并为社区贡献新的功能和优化。同时,这也为学习和研究信息检索、全文搜索、分布式计算等...
标题中的"solr-8.11.1-src.tgz"表明这是Apache Solr 8.11.1版本的源代码包,适用于那些希望对Solr进行深度定制或开发的用户。 源代码发布通常包含了编译和构建Solr所需的所有文件,包括Java源代码、配置文件、测试...
"apache-solr-dataimportscheduler.jar" 是一个专门为Solr设计的扩展包,用于实现自动化的数据增量更新调度。 首先,我们要理解Solr的数据导入过程。Solr使用DataImportHandler(DIH)来从关系型数据库、XML文件或...
Solr-8.11.1是该软件的一个特定版本,包含了最新的特性和改进。 在"solr-8.11.1.tgz"这个压缩包中,我们可以期待找到以下关键组成部分: 1. **Solr WAR 文件**:这是核心的搜索服务器应用程序,通常命名为`solr....
solr 增量更新所需要的包 solr-dataimporthandler-6.5.1 + solr-dataimporthandler-extras-6.5.1 + solr-data-import-scheduler-1.1.2
solr自动更新包
Solr-9.0.0是该软件的最新版本,此版本可能包含了一些新的特性和改进,比如性能优化、新的查询语法、更强大的分析器等。 在Solr-9.0.0的压缩包中,通常会包含以下组件: 1. **bin** 文件夹:这个目录下有启动和...
总的来说,solr-dataimport-scheduler.jar是Solr 7.x版本中实现定时数据导入和索引更新的关键工具,它极大地提升了Solr在实时和大数据环境下的性能和可靠性。通过合理配置和使用,可以确保你的Solr实例始终拥有最新...