http://wiki.apache.org/solr/DataImportHandler
目标
从关系数据库中导入数据
环境
apache-solr-dataimporthandler-3.4.0.jar和apache-solr-dataimporthandler-extras-3.4.0.jar和数据库驱动jar需要放到$solr.home/lib目录下
配置solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">/home/username/data-config.xml</str>
</lst>
</requestHandler>
配置data-config.xml, 使用mysql, 表结构同例子(example-DIH中的db)中一致
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/testsolr?autoReconnect=true&characterEncoding=utf8&useUnicode=true" user="root" password="123456" />
<!-- pk id 小写,大写报错, Map.containsKey区分大小写 -->
<document>
<entity name="item" pk="id"
query="select * from item"
deltaImportQuery="select * from item where ID ='${dataimporter.delta.id}'"
deltaQuery="select id from item where last_modified > '${dataimporter.last_index_time}'">
<entity name="feature" pk="ITEM_ID"
query="select DESCRIPTION as features from FEATURE where ITEM_ID='${item.ID}'"
deltaQuery="select ITEM_ID from FEATURE where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ID from item where ID=${feature.ITEM_ID}"/>
<entity name="item_category" pk="ITEM_ID, CATEGORY_ID"
query="select CATEGORY_ID from item_category where ITEM_ID='${item.ID}'"
deltaQuery="select ITEM_ID, CATEGORY_ID from item_category where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ID from item where ID=${item_category.ITEM_ID}">
<entity name="category" pk="ID"
query="select DESCRIPTION as cat from category where ID = '${item_category.CATEGORY_ID}'"
deltaQuery="select ID from category where last_modified > '${dataimporter.last_index_time}'"
parentDeltaQuery="select ITEM_ID, CATEGORY_ID from item_category where CATEGORY_ID=${category.ID}"/>
</entity>
</entity>
</document>
<!-- deltaQuery集中写在一起
<document name="products">
<entity name="item" pk="id"
query="select * from item"
deltaImportQuery="select * from item where ID='${dataimporter.delta.id}'"
deltaQuery_1="select id from item where last_modified > '${dataimporter.last_index_time}'"
deltaQuery="select id from item where
id in (select item_id as id from feature where last_modified > '${dataimporter.last_index_time}')
or id in (select item_id as id from item_category where
item_id in (select id as item_id from category where last_modified > '${dataimporter.last_index_time}')
or last_modified > '${dataimporter.last_index_time}'
)
or last_modified > '${dataimporter.last_index_time}'" >
<entity name="feature" pk="ITEM_ID"
query="select description as features from feature where item_id='${item.ID}'">
</entity>
<entity name="item_category" pk="ITEM_ID, CATEGORY_ID"
query="select CATEGORY_ID from item_category where ITEM_ID='${item.ID}'">
<entity name="category" pk="ID"
query="select description as cat from category where id = '${item_category.CATEGORY_ID}'">
</entity>
</entity>
</entity>
</document>
-->
</dataConfig>
pk="id"中id的大小写要注意
dataSource更多参数见http://wiki.apache.org/solr/DataImportHandler
entity属性
- query数据查询sql
- deltaQuery增加数据
-
parentDeltaQuery父entity增加数据
- deletedPkQuery?
- deltaImportQuery增量数据查询sql,如果没有则会根据query生成(可能生成错误),所以还是自己写的好
全导入
http://localhost:8983/solr/db/dataimport?command=full-import
增量导入
http://localhost:8983/solr/dataimport?command=delta-import
其他命令:
查看结果 http://localhost:8983/solr/dataimport
重新装载配置,修改配置文件后执行,避免重启服务http://localhost:8983/solr/dataimport?command=reload-config
终止http://localhost:8983/solr/dataimport?command=abort
执行后看返回的xml结果是否正常,还可以看后台是否有异常, 导入后可查询数据看看是否与数据库中一致
conf/dataimport.properties中保存有last_index_time, 导入后solr会更新这个时间
对于数据库中删除的数据?solr中的索引也应该要删除吧, 通过设置删除标记?(是不是最好的方法)
MORE:
multiple datasources
DataImportHandlerDeltaQueryViaFullImport
分享到:
相关推荐
Solr 数据导入处理器(DataImportHandler,DIH)是 Apache Solr 的一个重要组件,它允许用户从各种数据源,如关系型数据库、CSV 文件等,批量导入数据到 Solr 索引中。这个功能极大地简化了数据同步和更新的过程,...
Solr DataImportHandler (DIH) 是Apache Solr的一个强大特性,它允许用户从各种数据源导入数据到Solr索引。在给定的压缩包"solr-dataimporthandler.rar"中,包含了两个关键的JAR文件:"solr-dataimporthandler-8.9.0...
在Solr6版本中,DataImportHandler(DIH)是一个非常重要的特性,它允许Solr从外部数据源导入数据并建立索引。在"solr6--solr-dataimporthandler-scheduler-1.1"这个项目中,我们关注的重点是DIH的调度功能,也就是...
Solr DataImportHandler Scheduler 是一个用于 Apache Solr 的插件,它允许用户自动化和调度 Solr 的 DataImportHandler(DIH)过程。这个插件的版本是 1.1,包含源码,意味着用户可以根据自己的需求对代码进行修改...
solr-dataimporthandler-extras-1.4.0.jar.zip”中,主要包含了一个名为“apache-solr-dataimporthandler-extras-1.4.0.jar”的文件,这个文件是Solr的一个重要组件——DataImportHandler(DIH)的扩展库。...
【标题】"solr-dataimporthandler-extras-4.3.0.zip"是一个与Apache Solr相关的压缩包,其中包含Solr Data Import Handler(DIH)的额外组件。Solr是一个流行的开源全文搜索引擎,而Data Import Handler是Solr的一个...
solr DIH 必须类
DataImportHandler(DIH)是一个强大的工具,允许Solr与各种数据源进行交互,将这些数据转换为Solr可以理解的格式,然后索引到Solr中。它支持全量导入和增量导入,全量导入是重新导入所有数据,而增量导入则只导入自...
solr mysql 数据导入必需类
Solr DataImportHandler (DIH) 是一个内置的Solr组件,允许用户从关系型数据库或其他数据源导入数据,并将其转化为Solr可以处理的格式。DIH支持全量导入和增量导入两种模式。全量导入会将整个数据源的数据导入到Solr...
在Solr中,DataImportHandler(DIH)组件是一个强大的工具,用于从各种外部数据源,如关系型数据库(如MySQL)中导入数据并建立全文索引。在本例中,我们将探讨如何使用Solr 3.6版本的DIH组件来对MySQL数据库中的...
Apache Solr DataImportHandler(DIH)就是实现这一目标的重要工具。DIH允许Solr从各种数据源,如关系型数据库MySQL,导入数据。 在标题提到的"solr定时自动同步数据库需要用到的apache-solr-dataimportscheduler....
在本文中,我们将深入探讨如何使用Apache Solr 3.6的数据导入处理(DataImportHandler,简称DIH)组件从MySQL数据库中创建全文索引。Solr是一个强大的、开源的企业级搜索平台,而DIH是Solr的一个核心特性,允许用户...
Solr DIH JDBC 数据源这种在 Solr DIH 之上开发的目标是通过将一些设置外部化到共享配置文件,允许 DIH 配置对各种集合通用。 多个集合可以使用相同的架构和相同的 DIH 设置。 例如,SqlEntityProcessor 的query、...
`Solr DataImportHandler`(DIH)是 Solr 内置的一个功能,用于从关系型数据库或其他数据源导入数据,并建立索引。DIH 提供了全量和增量数据导入的功能,使得 Solr 能够保持与源数据的同步。`solr-dataimport-...
在与数据库集成的过程中,Solr提供了DataImportHandler(DIH)这一特性,使得能够从关系型数据库如MySQL导入数据到索引中。在你提供的压缩包中,包含了两个关键的jar文件,它们是实现Solr 7.5从MySQL数据库导入数据...
数据导入到Solr通常有两种方式:使用Solr DataImportHandler (DIH)从关系数据库导入,或使用SolrJ Java客户端API直接推送JSON、XML等格式的数据。在`webapp`目录下的示例可能展示了如何配置DIH来连接数据库并建立...
Solr使用DataImportHandler(DIH)来从关系型数据库、XML文件或其他数据源导入数据。DIH提供了一个全面的数据加载框架,支持全量导入和增量导入。 1. **全量导入**:全量导入是将所有数据从源数据库或文件一次性...
在 Solr 中,通常使用 DataImportHandler (DIH) 来从外部数据源(如数据库)导入数据并建立索引。DIH 提供了全量导入和增量导入的能力,但默认情况下并不具备自动执行导入任务的定时功能。`dataimportscheduler` ...
在理解这个知识点之前,我们需要先了解Solr的基本概念以及数据导入处理(DataImportHandler,DIH)。 Apache Solr是一个开源的全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。Solr能够对大量数据进行快速的...