solr7.4-DIH

常用命令:

>命令
终止、增量、全量、重新加载DIH配置、查询状态,返回文档创建数,文档删除数等状态信息
http://localhost:8389/solr/book/dataimport?command=abort
http://localhost:8389/solr/book/dataimport?command=delta-import
http://localhost:8389/solr/book/dataimport?command=full-import
http://localhost:8389/solr/book/dataimport?command=reload-config
http://localhost:8389/solr/book/dataimport?command=status

>参数
command full-import/delta-import/status/reload-config/abort	全量导入 / 增量导入 / 导入状态 / 重新加载配置文件 / 中止导入
verbose	true/false	输出详细步骤
clean	true/false	删除原有索引
commit	true/false	导入后是否提交
optimize	true/false	导入后是否优化索引
debug	true/false	调试模式,不会提交数据
entity	与db-data-config.xml中定义的entity对应	所要导入的entity
start	整数	调试模式用,开始的记录数
rows	整数	调试模式用,导入的记录数

>全量删除:
<delete><query>*:*</query></delete><commit/>

>Entity属性:
	pk="ID" 这个很有必要,因为其中的增量索引查询主键ID时需要
	dataSource="mydb"   这个引用名字是引用上面数据源的名字
	name="myinfo"   这个名字必须唯一,存在多个实体时
	query="select * from myinfo WHERE isdelete=0"   
		query查询是指查询出表里所有的符合条件的数据,因为笔者测试的有删除业务,所以where后面有一个限定条件isdelete=0,意思为查询未被删除的数据
		(注意这个query查询只对第一次全量导入有作用,对增量导入不起作用)   
	deltaQuery="select ID  from myinfo where my_date > '${dataimporter.last_index_time}'" 
		deltaQuery的意思是,查询出所有经过修改的记录的ID可能是修改操作,添加操作,删除操作产生的此查询只对增量导入起作用,而且只能返回ID值)
	deletedPkQuery="select ID from myinfo where isdelete=1"    
		此操作值查询那些数据库里伪删除的数据的ID(即isdelete标识为1的数据)
		solr通过它来删除索引里面对应的数据
		(此查询只对增量导入起作用,而且只能返回ID值)
	deltaImportQuery="select * from myinfo where ID='${dataimporter.delta.ID}'"
		此查询是获取以上两步的ID,然后把其全部数据获取,根据获取的数据
		对索引库进行更新操作,可能是删除,添加,修改
		(此查询只对增量导入起作用,可以返回多个字段的值,一般情况下,都是返回所有字段的列)
	parentDeltaQuery是获取父Entity的pk的SQL

>DIH具体配置:
	1. solr create -c reader
	2. cd solr-7.4.0\server\solr\reader\conf
	3. solrconfig.xml中添加
	<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
	<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  		<lst name="defaults">
	    	<str name="config">db-data-config.xml</str>
  		</lst>
	</requestHandler>
	4. 创建db-data-config.xml
	<dataConfig>
		<dataSource type="JdbcDataSource" 
				  name="ds-1"
	              driver="org.postgresql.Driver"  
	              url="jdbc:postgresql://x.x.x.x:5432/xxxx"  
	              user="xxxx"  
	              password="xxxx"/>  
		<document>  
			<entity dateSource="ds-1" name="reader" pk="dzid"
				query="select dzid,xming,dzzhao,picture,optime from lt_dzheinfo"
				deltaQuery="select dzid from lt_dzheinfo where optime > '${dih.last_index_time}'"	
				deletedPkQuery="select dzid from lt_dzheinfo where ztai != '正常'"		
				deltaImportQuery="select * from lt_dzheinfo where dzid = '${dih.delta.dzid}'"
				>
				<field column="dzid" name="id"></field>
				<field column="xming" name="xming"></field>
				<field column="dzzhao" name="dzzhao"></field>
				<field column="picture" name="picture"></field>
				<field column="optime" name="optime"></field>
			</entity>
		</document>
	</dataConfig>
	5. 定义solr创建DB所用字段(schema中缺少的),打开managed-schema文件
	<field name="xming" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<field name="dzzhao" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<field name="picture" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<field name="optime" type="pdate" indexed="true" stored="true" required="true" multiValued="false" />
	
>定时DIH配置:
	1. 添加依赖包:
		下载solr-dataimportscheduler.jar包放入solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib下
		(文件下载:https://download.csdn.net/download/weixin_38289303/12005671)
	2. 修改web.xml文件,添加监听器:
		solr-7.4.0\server\solr-webapp\webapp\WEB-INF\web.xml添加如下配置
		<listener>
			<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
		</listener>
	3. 查看日志:solr-7.4.0\server\logs\solr.log。添加指定的文件到指定目录。
		新建文件:solr-7.4.0\server\solr\conf\dataimport.properties(若没conf目录,自己创建)。
		dataimport.properties文件内容:
		#################################################
		#                                               #
		#       dataimport scheduler properties         #
		#                                               #
		#################################################
		
		#  to sync or not to sync
		#  1 - active; anything else - inactive
		syncEnabled=1
		
		#  which cores to schedule
		#  in a multi-core environment you can decide which cores you want syncronized
		#  leave empty or comment it out if using single-core deployment
		syncCores=reader
		
		#  solr server name or IP address
		#  [defaults to localhost if empty]
		server=localhost
		
		#  solr server port
		#  [defaults to 80 if empty]
		port=8983
		
		#  application name/context
		#  [defaults to current ServletContextListener's context (app) name]
		webapp=solr
		
		#  URL params [mandatory]
		#  remainder of URL
		#刚才增量的参数
		params=/dataimport?command=delta-import&commit=ture&wt=json&indent=true&entity=reader&clean=false
		
		#  schedule interval
		#  number of minutes between two runs
		#  [defaults to 30 if empty]
		#一分钟执行一次
		interval=1
	
		#  重做索引的时间间隔,单位分钟,默认7200,即5天; 
		#  为空,为0,或者注释掉:表示永不重做索引
		reBuildIndexInterval=10080

		#  重做索引的参数
		reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
		
		#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
		#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期
		reBuildIndexBeginTime=03:10:00		
	4. 测试成功!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值