solrcloud配置dataimport

来源:互联网 发布:java编写的游戏引擎 编辑:程序博客网 时间:2024/06/05 16:09

solrcloud配置dataimport

上一篇说了solrcloud的中文分词,这一篇就讲讲solrcloud的dataimport。

很多搜索应用都将其待索引内容存储在结构化数据存储中,如关系型数据库。 数据导入处理器(DIH) 提供了从一个数据存储中导入内容并索引它的机制。 除了关系型数据库, DIH 还可以索引来自像 RSS 和 ATOM 种子这样基于 HTTP 的数据源的内容、 e-mail 仓库以及有一个 XPath 处理其可用于生成字段的结构化的 XML。

solrcloud的数据引入分两种,全量引入(full-import)和增量引入(delta-import)。顾名思义,全量引入就是一次性全部引入,而增量引入是当数据库中数据有改变时使用的。

要使用dataimport必须在solrcloud配置文件,solrconfig.xml文件中添加dataimportHandler,如下所示:

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

然后再conf目录下添加一个data-config.xml文件,接着配置data-config.xml。在配置data-config.xml前首先解释一下几个重要的概念:

数据导入处理器的描述以特殊的方式使用了多个类似的词,如实体(entity)和处理器(processor), 其解释如下表。

Datasource: 数据源定义了感兴趣的数据的位置。对于数据库,它是一个 DSN。对于 HTTP 数据源,它是基本 URL。

Entity: 概念上,实体会被处理以生成包含多个字段的文档的集合,它们(可以选择以多种不同的方式进行转换)会被发送给 Solr 进行索引。对一个 RDBMS 数据源,一个实体是一个视图或者表,它可能会被一或多个 SQL 语句处理来生成一系列具有一或多个列(字段)的行(文档)。
Processor: 一个实体处理器会完成整个从数据源抽取内容、转换并将其添加到索引的工作。可以用自定义实体处理器扩展或替换提供的处理器。
Transformer: 从实体中取得的每个字段的集都可以选择进行转换。这个过程可以修改字段、创建新字段或者从单个行生成多个行/文档。DIH 中内置了多个转换器,它们可以执行像修改日期、剥离 HTML 等功能。可以使用公共可用的接口来编写自定义转换器。

配置data-config.xml如下:

<?xml version="1.0" encoding="utf-8"?><dataConfig><dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.219.136:3306/demo"   user="xxxxxx" password="xxxxxx"/>    <document>            <entity name="test" pk="id"  query="select * from test"              deltaImportQuery="select * from test where id='${dih.delta.id}'"              deltaQuery="select id from test where last_modified > '${dih.last_index_time}'">                                <field column="id" name="id"/>                <field column="cat" name="cat"/>                <field column="name" name="name"/>                <field column="demo" name="demo"/>            </entity>       </document></dataConfig>

其上既可以使用full-import导入数据也可以使用delta-import导入数据。其中dataSource无需多说,数据源配置,entity是数据库中的表,name就是表名,pk:主键,query:在full-import模式下使用这个query查询,而deltaImportQuery和deltaQuery是delta-import专用,delta-import是这样的,首先在你的数据库有一个last_modified字段类型为timestamp,当你使用dataimport的时候solrcloud会在conf目录下自动生成dataimport.properties文件记录最后一次引入的时间,当要执行delta-import时首先执行deltaQuery查出有改变的数据的id然后通过id来执行deltaImportQuery来增量导入数据。
值得一提的是在solr5之后使用${dih.last_index_time}来获取dataimport.properties文件的last_index_time属性。
下面是一个我delta-import的一次例子:


0 0
原创粉丝点击