solr全量索引
Posted 编世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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示例如下:
也可以直接进入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目录)
以上是关于solr全量索引的主要内容,如果未能解决你的问题,请参考以下文章
solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例