Apache solr进阶----导入数据库数据

环境

  1. 系统:CentOS Linux release 7.6.1810
  2. jdk: openjdk 1.8.0_222
  3. solr版本:solr-7.7.2
  4. 数据库: Oracle 11.2.0.4.0 - 64bit

操作步骤

  1. 下载对应数据库的驱动jar包,并上传到$SOLR_INSTALL_HOME/server/solr-webapp/webapp/WEB-INF/lib目录下
  2. 将数据导入的相关jar也一并copy到$SOLR_INSTALL_HOME/server/solr-webapp/webapp/WEB-INF/lib目录下
  • solr-dataimporthandler-7.7.2.jar
  • solr-dataimporthandler-extras-7.7.2.jar
cd $SOLR_INSTALL_HOME/dist
cp -r solr-dataimporthandler-7.7.2.jar solr-dataimporthandler-extras-7.7.2.jar $SOLR_INSTALL_HOME/server/solr-webapp/webapp/WEB-INF/lib
  1. 编辑配置文件solrconfig.xml,在680行左右,添加以下内容
vim $SOLR_INSTALL_HOME/server/solr/my_core/conf/solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
<!--  oracle-db/data-config.xml是引用配置文件,文件存放路径相对于solr_home来说,也就是$SOLR_INSTALL_HOME/server/solr/my_core/oracle-db/data-config.xml -->
                <str name="config">oracle-db/data-config.xml</str>
        </lst>
</requestHandler>

  1. 创建data-config.xml,编写数据库字段信息
# 新建data-config.xml引用文件
cd $SOLR_INSTALL_HOME/server/solr/my_core
mkdir oracle-db
vim data-config.xml
# 添加以下内容
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库配置信息,看情况修改成自己的信息  -->
	<dataSource type="JdbcDataSource"  
                driver="oracle.jdbc.driver.OracleDriver"  
                url="jdbc:oracle:thin:@10.204.105.127:1521:db11g02"  
                user="test"  
                password="123456" />
	<document>
		<entity name="INSTANCE_DETAIL" pk='INSTANCE_DETAIL_ID' transformer="ClobTransformer" 
                deltaBatch="true"
                query="SELECT * FROM SOA_ESB_INSTANCE_DETAIL where CREATED_DATE &gt; to_date('2019-12-20 00:00:00','yyyy-mm-dd hh24:mi:ss') "
                deltaImportQuery="select * from SOA_ESB_INSTANCE_DETAIL where CREATED_DATE &gt;= to_date('${dataimporter.last_index_time}','yyyy-mm-dd hh24:mi:ss') AND CREATED_DATE &lt; to_date('${dataimporter.index_start_time}','yyyy-mm-dd hh24:mi:ss')"
				deltaQuery="select INSTANCE_DETAIL_ID from SOA_ESB_INSTANCE_DETAIL where CREATED_DATE &gt;= to_date('${dataimporter.last_index_time}','yyyy-mm-dd hh24:mi:ss') AND CREATED_DATE &lt; to_date('${dataimporter.index_start_time}','yyyy-mm-dd hh24:mi:ss') ">      
			<field column="INSTANCE_DETAIL_ID" name="ID" />
			<field column="INSTANCE_UUID" name="INSTANCE_UUID" />
			<field column="LOG" name="LOG" clob="true" />
			<field column="LOG_SIZE" name="LOG_SIZE" />
			<field column="TYPE" name="TYPE" />
			<field column="CREATED_DATE" name="CREATED_DATE" />
			<field column="SERVICE_NAME" name="SERVICE_NAME" />
			<field column="MAJOR_VERSION" name="MAJOR_VERSION" />
		</entity>
	</document>
</dataConfig>
  1. 集成中文分词器,参见博文----集成分词器-----solr自带分词器和IK分词器对比
  2. 维护字段映射关系,添加以下内容
vim $SOLR_INSTALL_HOME/server/solr/my_core/conf/managed-schema

# 在文件末添加以下内容,保存并退出,重启solr
<field name="ID" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="INSTANCE_UUID" type="string" indexed="true" stored="true"/>
<field name="LOG" type="text_ik" indexed="true" stored="false" />
<field name="LOG_SIZE" type="plong" indexed="true" stored="true" />
<field name="TYPE" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="CREATED_DATE" type="pdates" indexed="true" stored="true"/>
<field name="SERVICE_NAME" type="string" indexed="true" stored="true"/>
<field name="MAJOR_VERSION" type="string" indexed="true" stored="true"/>
  1. 接下来在界面执行导入操作
    导入操作
发布了69 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Min_Monk/article/details/104286182