Solr全量索引

Solr DIH(Data Import Handler)组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler,在Solr的solrconfig.xml中配置两个handler,配置分别说明如下:

solrconfig.xml配置如下:

<requestHandler name="/dataimport"
     class="org.apache.solr.handler.dataimport.DataImportHandler">
     <lst name="defaults">
          <str name="config">data-config.xml</str>
     </lst>
</requestHandler>


data-config.xml

 <dataConfig>
    <dataSource name="jdbc" driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"
        user="root" password="shyh"/>
    <document name="st_data">
        <entity name="solrtext" pk="id"
                query="select * from solrtext limit ${dataimporter.request.length} offset ${dataimporter.request.offset}"
                transformer="RegexTransformer">
            <field column="id" name="id" />
            <field column="url" name="url" />
            <field column="title" name="title" />
            <field column="author" name="author" />
	    <field column="addon" name="addon" />
	    <field column="path" name="path" />
        </entity>
    </document>
</dataConfig>


说明:column为数据库字段名,name为schema.xml中对应的字段名


schmea.xml增加域

   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="url" type="text_general" indexed="true" stored="true" />
   <field name="title" type="text_general" indexed="true" stored="true"/>
   <field name="author" type="text_general" indexed="true" stored="true"/>
   <field name="addon" type="string" indexed="true" stored="true"/>
    <field name="path" type="string" indexed="false" stored="true"/>


上面主要是通过内置变量 “${dataimporter.request.length}”和 “${dataimporter.request.offset}”来设置一个批次索引的数据表记录数,请求的URL示例如下:

http://localhost:8080/solr/dataimport?command=full-import&commit=true&clean=false&offset=1000000&length=100000

也可以直接进入solr的Dataimport页面导入:

上面表示,对数据表中id范围为[10000000, 1100000]的记录进行索引,因为数据表可能达到千万记录数,而且线上有业务在操作数据库,所以要选择分批进行索引。

如果数据量小可以直接全量导入不需分批:

<pre name="code" class="java"> <dataConfig>
    <dataSource name="jdbc" driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"
        user="root" password="shyh"/>
    <document name="st_data">
        <entity name="solrtext" pk="id"
                query="select * from solrtext"
                transformer="RegexTransformer">
            <field column="id" name="id" />
            <field column="url" name="url" />
            <field column="title" name="title" />
            <field column="author" name="author" />
	    <field column="addon" name="addon" />
	    <field column="path" name="path" />
        </entity>
    </document>
</dataConfig>


 

注:执行导入操作时需要在webapps的solr项目的lib目录中加入数据库的驱动包以及solr-dataimporthandler-4.5.1.jar和solr-dataimporthandler-extras-4.5.1.jar这两个jar包(后两个jar包位于solr的解压包的dist目录)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值