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页面导入:Solr全量索引_第1张图片

上面表示,对数据表中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目录)



你可能感兴趣的:(Solr,全量索引)