Solr fullimport

原文:https://blog.csdn.net/leroy008/article/details/17437437

Solr提供了full-importdelta-import两种导入方式

多个entity,每个entity有各自的last_index_time,可以通过dataimporter.entityname.last_index_time来取各自的最后更新时间来进行增量更新。

多个entity时,进行full-import时指明导入某个entity,http://localhost:8088/solr-platform/zbs-core/dataimport?entity=zcx&command=full-import.会把之前创建的索引通通删除(包括其他ENTITY创建的索引)重新建,这是要注意的地方.我开始以为是只删除当前entity的所有索引再重新full-import,结果不是这样的,加上参数clean = false;但也会删除相同id的(在 scheam.xml 的uniqueKey 声明的)


所谓delta-import主要是对于数据库(也可能是文件等等)中增加或者被修改的字段进行导入。主要原理是利用率每次我们进行import的时候在solr.home\conf下面生成的dataimport.properties文件,此文件里面有最近一次导入的相关信息。这个文件如下:

1.  #Wed Apr 21 16:48:27 CST 2010

2.  last_index_time=2010-04-21 16\:48\:24

3.  id.last_index_time=2010-04-21 16\:48\:24

其实last_index_time是最近一次索引(full-import或者delta-import)的时间。

通过比较这个时间和我们数据库表中的timestamp列即可得出哪些是之后修改或者添加的。

可通过http://<host>:<port>/solr/dataimport查看

下面是操作步骤:

1.       配置好请求处理器。(这个见我的上一篇文章)

2.       修改data-config.xml如下:

[html]  view plain  copy
  1. <dataConfig>   
  2.  <dataSource type="JdbcDataSource"   
  3.              driver="com.mysql.jdbc.Driver"   
  4.              url="jdbc:mysql://localhost:3306/workshop"   
  5.               user="root"   
  6.               password="123"  
  7.            batchSize="100"  
  8.              autoCommit="false" />   
  9. <document>   
  10.   <entity name="id"   
  11.          query="SELECT id,`user`,title,content,`timestamp`,`text` FROM article"  
  12.           deltaImportQuery="SELECT id,`user`,title,content,`timestamp`,`text` FROM article where id='${dataimporter.delta.id}'"  
  13.                deltaQuery="select id from article where `timestamp` > '${dataimporter.last_index_time}'">   
  14.    </entity>   
  15. </document>   
  16. lt;/dataConfig>    

注意entity标签的参数:

l  deltaImportQuery

仅适用于delta-import的参数。DIH会检查数据库中的最后修改时间是否与我们

这个示例为了尽可能简单,没有使用多表。数据库对应表结构如下:


id    Integer       increment

user  varchar(45)

title varchar(45)

content varchar(2000)

timestamp datatime

text    varchar(2000)


在schema.xml增加相应的字段,相同可以抽出,需要使用分词的则把type指向分词类型。(type="textComplex")


3.       最后我们请求:

http://<host>:<port>/solr/dataimport?command=delta-import 即可完成delta import

相关参数如下:

n  entity

entity是document下面的标签(data-config.xml)。使用这个参数可以有选择的执行一个或多个entity   。使用多个entity参数可以使得多个entity同时运行。如果不选择此参数那么所有的都会被运行。

n  clean

选择是否要在索引开始构建之前删除之前的索引,默认为true

n  commit

选择是否在索引完成之后提交。默认为true

n  optimize

是否在索引完成之后对索引进行优化。默认为true

n  debug

是否以调试模式运行,适用于交互式开发(interactive development mode)之中。

请注意,如果以调试模式运行,那么默认不会自动提交,请加参数“commit=true”

 所有命令如下 

[java]  view plain  copy
  1. public static final String FULL_IMPORT_CMD = "full-import";  
  2.   
  3.   public static final String IMPORT_CMD = "import";  
  4.   
  5.   public static final String DELTA_IMPORT_CMD = "delta-import";  
  6.   
  7.   public static final String ABORT_CMD = "abort";  
  8.   
  9.   public static final String DEBUG_MODE = "debug";  
  10.   
  11.   public static final String RELOAD_CONF_CMD = "reload-config";  
  12.   
  13.   public static final String SHOW_CONF_CMD = "show-config";  

请求格式如下

http://localhost:8080/solr/dataimport?command=full-import


参考:

http://blog.csdn.net/xiao_jun_0820/article/details/7997411

http://forchenyun.iteye.com/blog/649660


Solr 6.4.1中,数据源配置是索引数据的关键步骤。以下是配置数据源的详细步骤: 1. **编辑solrconfig.xml文件**: 在你的Solr配置目录中,找到并编辑`solrconfig.xml`文件。这个文件包含了Solr的核心配置信息。 2. **配置数据导入处理程序**: 在`solrconfig.xml`中,添加数据导入处理程序的配置。数据导入处理程序允许你从数据库、XML、CSV等数据源导入数据。 ```xml <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler> ``` 3. **创建data-config.xml文件**: 在Solr的配置目录中,创建一个名为`data-config.xml`的文件。这个文件定义了数据源的具体配置。 ```xml <?xml version="1.0" encoding="UTF-8"?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/yourdatabase" user="yourusername" password="yourpassword"/> <document> <entity name="entityName" query="SELECT id, name, description FROM yourtable"> <field column="id" name="id"/> <field column="name" name="name"/> <field column="description" name="description"/> </entity> </document> </dataConfig> ``` 4. **配置schema.xml文件**: 在`schema.xml`文件中,定义与数据源中的字段对应的字段类型和字段。 ```xml <field name="id" type="string" indexed="true" stored="true" required="true" /> <field name="name" type="text_general" indexed="true" stored="true" /> <field name="description" type="text_general" indexed="true" stored="true" /> ``` 5. **重启Solr**: 配置完成后,重启Solr服务器以使配置生效。 6. **执行数据导入**: 通过访问`http://localhost:8983/solr/yourcore/dataimport?command=full-import`,启动数据导入过程。 通过以上步骤,你可以成功配置Solr 6.4.1的数据源,并开始索引数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值