solr4.5配置增量索引(DIH)

来源:互联网 发布:c语言函数的概念 编辑:程序博客网 时间:2024/06/15 08:43

DIH是solr用于从数据库向索引库批量导入数据。

DIH分为两种情况:全部索引(full-import),与增量索引(delta-import)

full-import用于初次建立索引库,或者向覆盖掉之前索引时使用。

delta-import用于运行中在原基础上增加索引,一般做定期更新使用。

下面介绍full-import:

1.首先找到../solr/core/conf/文件夹下的solrcofig.xml

在其中添加如下字段:


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

其中/db/data-config.xml位于../solr/core/下。

data-config.xml的内容如下:

<?xml version="1.0" encoding="utf-8"?>  <dataConfig> <dataSource type="JdbcDataSource" name="ds_name" driver="com.mysql.jdbc.Driver"     url="jdbc:mysql://192.168.0.1:3306/dataBaseName"     user="admin"     password="passport"/>   <document>      <entity name="tableName_1" dataSource="ds_name"  query="select id,name .. from user ">            <field column="id" name="id" />                                   <field column="name" name="name" />                                              <entity name="tableName_2" dataSource="ds_name" query="select idCard as id,name from tableName_2 where tableName_id='${tableName1.id}'"> <field column="id" name="card_id" />   <field column="name" name="card_name" />      </entity>       </entity>    </document> </dataConfig>

其上的<dataSource>中的name为数据库的名字。<entity>中的name为你所需要的表的名字。dataSource为刚才我们设定的

数据库的名字。query为你想导入的字段的sql语句。<field>为数据库已solr索引库的匹配字段,column为数据库中的字段名字。name为该字段在solr索引库中的名称,不能重复。

上面套在<entity></entity>中间的<entity></entity>为数据库中的多表联合查询。

将如上内容配置好后,重启solr我们就可以导入数据了。访问:http://localhost:8080/sorl,选择你所使用的core,看到如下画面。


command选择full-improt,默认会勾选Clean(清空索引库数据),Commit(导入后保存数据),选中即可。单击Execute开始导入。单机Refresh Status进行刷新,可在右侧查看导入情况。

至此full-import介绍完毕。

现在介绍delta-import

delta-improt有两种实现方法。第一种使用full-import方式导入,第二种使用普通的

delta-import方式导入。因为我用第二种方法没有导入成功。而且有人指出该方式导入太慢。所以在此不介绍。只介绍第一种方法。

首先同上,找到../solr/core/conf/文件夹下的solrcofig.xml

在其中添加如下字段:


与之前相比,一是name修改了,二是我们有在../db/文件夹下新建了一个文件,名为:

delta-data-config.xml。

delta-data-config.xml的内容与full-improt总是用的data-config.xml内容几乎相同。

只是有如下改动:

   <entity name="table_name" pk="id"  dataSource="ds_name"  query="select id from table_name where last_update> '${dih.last_index_time}'">                        

没错!就是在query的字段的sql语句中添加了一个条件。不过这要求该table中有last_update字段。该字段用于表示该条数据的最后更新或插入时间。

${dih.last_index_time}位于../core/conf/文件夹中:


名字为dataimprot.properties的配置文件中。${dih.last_index_time}用于表示索引之后的创建时间。该文件为自动生成。文件内容:


修改完成后,重启solr。访问http://localhsot:8080/solr,选择core,选择dataimport,

command选择为delta-import,将Clean,去掉,即可。

至此delta-import介绍完毕。

欢迎各位大侠斧正。

关于delta-import的第二种方法做如下贴图:

这种方法也是修改query。但从配置上看,确实会比full-import慢,因为要做多次查询。

而且deltaQuery中不能用“=”而是应该用in,至于deltaQuery中条件部分,to_date的使用,(还有用作to_char)因为在下的知识浅薄,所以不明白是什么意思。如有大神敬请告知。


0 0
原创粉丝点击