使用dataimport入门

本文详细介绍如何使用DataImport工具将数据库表数据导入到Solr索引中,包括配置SolrConfig.xml,创建data-config.xml,调整Solr架构,部署JDBC驱动及执行导入命令等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用dataimport工具,直接将数据库表索引到SOLR中

上篇文章创建了一个简单的helloword核心

https://blog.youkuaiyun.com/qq_26229005/article/details/87913225

这里为helloworld核心增加数据库导入到solr索引的内容

步骤1:编辑solrconfig.xml以添加请求处理程序

cd /var/solr/data/helloworld/conf

 

vi solrconfig.xml 增加

在<config>元素下增加

<requestHandler name="/dataimport" class="solr.DataImportHandler">

<lst name="defaults">

  <str name="config">data-config.xml</str>

</lst>

</requestHandler>

步骤2:创建一个data-config.xml文件,如下所示,并将其保存到conf dir

vi data-config.xml 增加如下内容,这里我以导入oracle的一个表为例子。

<dataConfig>

  <dataSource type="JdbcDataSource"

              driver="oracle.jdbc.driver.OracleDriver"

              url="jdbc:oracle:thin:@//"

              user="*****"

              password="******"/>

  <document>

    <entity name="id"

            query="select id,name from CLASS_TYPE">

    </entity>

  </document>

</dataConfig>

步骤3:确保solr架构(schema)具有字段“id”、“name”。在data-config.xml中更改适当的详细信息

默认的唯一的主键一般是id,这里我们使用控制台界面的创建。

步骤4:将JDBC驱动程序JAR文件放到<solr home>/lib目录中。

cd /var/solr/data

mkdir lib

cd lib

cp  /xx/ojdbc6.jar .

service solr restart(非必须,可以使用界面的上的configuration的reload。待验证)

步骤5:运行命令

http://solr-host:port/solr/dataimport?command=full-import

请记住,每次执行完全导入时,都会清除索引。如果不希望发生这种情况,请添加clean=false。例如:

http://solr-host:port/solr/dataimport?command=full-import&clean=false

也可以通过界面测试:

 

用不同的名称为字段编制索引

步骤:1更改数据配置(data-config.xml)如下:

<dataConfig>

  <dataSource type="JdbcDataSource"

              driver="oracle.jdbc.driver.OracleDriver"

              url="jdbc:oracle:thin:@//"

              user="xxx"

              password="xxx"/>

   <!-- <document>

    <entity name="id"

            query="select id,name,section from CLASS_TYPE">

      <field column="id" name="solr_id"/>

       <field column="name" name="solr_name"/>

       <field column="section" name="solr_section"/>



    </entity>

  </document>

-->



<document>

    <entity name="classType"

            query="select id,name,section,subject from CLASS_TYPE">

     <!--  <field column="id" name="id"/>        

       <field column="name" name="name_txt_cz"/>

       -->

        <field column="ID" name="id"/>

       <field column="NAME" name="solr2_name"/>

       <field column="SECTION" name="solr2_id"/>

       <field column="SUBJECT" name="solr_id"/>   

  </entity>

  </document>



</dataConfig>

注意:field里column的大小写配成和数据库的schema一致

第2步:这一次字段将写入solr字段'solr_id'、'solr2_name'、'solr2_id。schema中必须包含这些字段。

 

 第3步执行导入操作

 http://solr-host:port/dataimpor?command=full-import

将多个表中的数据索引到solr中

步骤1:在data-config.xml

<dataConfig>

  <dataSource type="JdbcDataSource"

              driver="oracle.jdbc.driver.OracleDriver"

              url="jdbc:oracle:thin:@t"

              user=""

              password="“/>

  <document>

    <entity name="classType"

            query="select id,name,section,subject from CLASS_TYPE">

     <!--  <field column="id" name="id"/>        

       <field column="name" name="name_txt_cz"/>

       -->

        <field column="ID" name="id"/>

       <field column="NAME" name="solr2_name"/>

       <field column="SECTION" name="solr2_id"/>

       <field column="SUBJECT" name="subject_txt_cz"/>   

    <entity name="inner"

               query="select DETAIL_NAME,DETAIL_CODE FROM RMS_DICTIONARY_DETAIL WHERE DICTIONARY_CODE='subject' and DETAIL_CODE='${classType.SUBJECT}'">

       <field column="DETAIL_NAME" name="subjectName_txt_cjk"/>

</entity>  

</entity>

  </document>

</dataConfig>

 

步骤2:这是使用了动态域*_txt_cjk。

步骤3:运行完全导入命令。

 http://solr-host:port/dataimpor?command=full-import

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值