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

来源:互联网 发布:linux 系统杀进程日志 编辑:程序博客网 时间:2024/06/06 00:16

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=trueenable.slave=falseMASTER_CORE_URL=POLL_TIME=00:05:00



对于repeater节点,内容可如下设置:
[plain] view plaincopy
  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=trueenable.slave=trueMASTER_CORE_URL=192.168.111.12:2222/solrPOLL_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/shforeachdir(){        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 0
原创粉丝点击