solr管理配置,关于数据导入,集群复制及日志配置

1 日志设置

默认solr的日志级别为为info,在使用过程中会产生大量日志,特别是多核情况下,启动速度和响应速度也会被拖慢

日志级别的设置方法,一是在admin页中临时设置,略去不表

另外就是在java虚拟机启动的参数中设置,

对于weblogic,找到weblogic使用的jdk目录,

在jre/lib/logging.properties文件中加入一行

org.apache.solr.level=WARNNING

可以使用的参数有:
FINEST,FINE,CONFIG,INFO,WARNING,SEVERE,OFF


2 数据增量导入设置

使用dataimport handler进行数据导入时,使用的配置文件是core/conf/data-config.xml文件

对于进行增量导入,在浏览器中输入的url是

http://localhost:8080/solr/dataimport?command=delta-import

当然,对应的导入配置不可少

对于增量更新索引,一般使用的方法是在数据表中包含时间字段,

每次更新时只查找表中数据修改时间晚于上次导入时间的所有数据

在此处,表中含四列

ID

ADDR

REGION_CODE

CREATE_DATE

其中Create_date列的格式要为YYYY-MM-DD HH:mm:SS

示例如下:

  <dataConfig>
  <dataSource name="mysolrdb" jndiName="jdbc/mysolrdb" type="JdbcDataSource" batch-size="1000" />
  <document>
    <entity name="user" query="select ID,ADDR FROM F_ADDR WHERE REGION_CODE LIKE '11%'" deltaImportQuery="select ID,ADDR WHERE ID='${dataimporter.delta.ID}'" deltaQuery="SELECT ID FROM F_ADDR WHERE REGION_CODE LIKE '11%' and CREATE_DATE>'${dataimporter.last_index_time}'">
      <field column="ID" name="ID" />
      <field name="ADDR" column="ADDR" />
    </entity>
  </document>
</dataConfig>

对于deltaQuery查询到的每一条数据,都会执行一次deltaImportQuery,这样就实现了索引的增量更新

当修改data-config.xml 文件配置后,浏览器中输入URL

http://localhost:8080/solr/dataimport?command=reload-config

可以进行重新加载配置文件

关于数据导入的更多功能,可进入 管理页面:

http://localhost:8080/solr/admin/dataimport.jsp?handler=/dataimport


3 集群索引复制

在搭建solr实际应用中,可能会启用多台服务器,

一台master节点,负责索引的更新,

多台slave节点,从master节点同步索引数据并向外提供搜索服务

在多核multicore情况下,对于master和slave节点的replication配置写起来比较麻烦

比如在我实际项目中,大概1500万条数据分了300多个core

一开始使用C#写了个工具直接修改solrconfig.xml文件

后来部署到redhat上,数据导入后,这时候再进行master和slave节点的切换,

以及master节点URL配置的修改就没那么简单了,幸好solrconfig.xml支持使用参数

在solrconfig.xml文件同目录下新建一个名为solrcore.properties的文本文件

修改solrconfig.xml文件的replication节,可以写成这样:

      

<requestHandler name="/replication" class="solr.ReplicationHandler" >
       <lst name="master">
		 <str name="enable">${enable.master:false}</str>
         <str name="replicateAfter">commit</str>
         <str name="replicateAfter">startup</str>
         <str name="confFiles">schema.xml,stopwords.txt</str>
       </lst>
      <lst name="slave">
		 <str name="enable">${enable.slave:false}</str>
         <str name="masterUrl">http://${MASTER_CORE_URL}/${solr.core.name}/replication</str>
         <str name="pollInterval">${POLL_TIME}</str>
       </lst>
     </requestHandler>


其中对应的参数解释如下:

enable.master 是否为master节点

enable.slave  是否为slave节点

MASTER_CORE_URL master节点的URL

POLL_TIME  同步频率

solr.core.name 当前core的名称

除了solr.core.name是solr提供的属性外,其他的均需要放置到solrcore.properties文件中

对于master节点,solrcore.properties文件内容如下:

enable.master=true
enable.slave=false
MASTER_CORE_URL=
POLL_TIME=00:05:00



对于repeater节点,内容可如下设置:
[plain] view plain copy
  1. enable.master=true  
  2. enable.slave=true  
  3. MASTER_CORE_URL=192.168.111.12:2222/solr  
  4. POLL_TIME=00:05:00  

对于slave节点其内容可以如下设置:

enable.master=true
enable.slave=true
MASTER_CORE_URL=192.168.111.12:2222/solr
POLL_TIME=00:05:00



这样,如果要批量更新master节点URL或者切换节点的状态,直接修改这个配置文件,

在linux下直接写一个批量复制的shell脚本就解决了,不用再逐个文件的修改solrconfig.xml了

比如,cores目录结构如下:

|-- cores
|   |-- core1
|   |   `-- conf
|   |-- core2
|   |   `-- conf
|   |-- core3
|   |   `-- conf
|   `-- core4
|       `-- conf
|-- solrcore.properties
|-- copySolrcoreConfig.sh


则shell脚本文件copySolrcoreConfig.sh的内容如下:

#!/bin/sh
foreachdir(){
        for file in $1/*
        do
          if [ -d $file ]
            then
                 cp -rf $1/solrcore.properties $file/conf/
             fi
         done
}
if [ $# -gt 0 ]
then
    foreachdir "$1"
else
    foreachdir "."
fi



这只是个很简单的shell脚本,只实现了文件夹遍历和复制,可以增加一些提示、统计及错误处理等等
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值