`

solr DataImportHandler(DIH)

 
阅读更多

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&amp;characterEncoding=utf8&amp;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的jar包

    Solr 数据导入处理器(DataImportHandler,DIH)是 Apache Solr 的一个重要组件,它允许用户从各种数据源,如关系型数据库、CSV 文件等,批量导入数据到 Solr 索引中。这个功能极大地简化了数据同步和更新的过程,...

    solr-dataimporthandler.rar

    Solr DataImportHandler (DIH) 是Apache Solr的一个强大特性,它允许用户从各种数据源导入数据到Solr索引。在给定的压缩包"solr-dataimporthandler.rar"中,包含了两个关键的JAR文件:"solr-dataimporthandler-8.9.0...

    solr6--solr-dataimporthandler-scheduler-1.1

    在Solr6版本中,DataImportHandler(DIH)是一个非常重要的特性,它允许Solr从外部数据源导入数据并建立索引。在"solr6--solr-dataimporthandler-scheduler-1.1"这个项目中,我们关注的重点是DIH的调度功能,也就是...

    solr-dataimporthandler-scheduler-1.1

    Solr DataImportHandler Scheduler 是一个用于 Apache Solr 的插件,它允许用户自动化和调度 Solr 的 DataImportHandler(DIH)过程。这个插件的版本是 1.1,包含源码,意味着用户可以根据自己的需求对代码进行修改...

    apache-solr-dataimporthandler-extras-1.4.0.jar.zip

    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

    【标题】"solr-dataimporthandler-extras-4.3.0.zip"是一个与Apache Solr相关的压缩包,其中包含Solr Data Import Handler(DIH)的额外组件。Solr是一个流行的开源全文搜索引擎,而Data Import Handler是Solr的一个...

    solr-dataimporthandler-6.6

    solr DIH 必须类

    solr6.5.1定时增量apache-solr-dataimportscheduler

    DataImportHandler(DIH)是一个强大的工具,允许Solr与各种数据源进行交互,将这些数据转换为Solr可以理解的格式,然后索引到Solr中。它支持全量导入和增量导入,全量导入是重新导入所有数据,而增量导入则只导入自...

    solr-dataimporthandler-extras-6.6.0

    solr mysql 数据导入必需类

    solr定时同步jar包.zip

    Solr DataImportHandler (DIH) 是一个内置的Solr组件,允许用户从关系型数据库或其他数据源导入数据,并将其转化为Solr可以处理的格式。DIH支持全量导入和增量导入两种模式。全量导入会将整个数据源的数据导入到Solr...

    Solr3.6用DIH组件进行MySQL数据库全文索引[参照].pdf

    在Solr中,DataImportHandler(DIH)组件是一个强大的工具,用于从各种外部数据源,如关系型数据库(如MySQL)中导入数据并建立全文索引。在本例中,我们将探讨如何使用Solr 3.6版本的DIH组件来对MySQL数据库中的...

    solr定时自动同步数据库需要用到的apache-solr-dataimportscheduler.jar包

    Apache Solr DataImportHandler(DIH)就是实现这一目标的重要工具。DIH允许Solr从各种数据源,如关系型数据库MySQL,导入数据。 在标题提到的"solr定时自动同步数据库需要用到的apache-solr-dataimportscheduler....

    Solr3.6用DIH组件进行MySQL数据库全文索引[归纳].pdf

    在本文中,我们将深入探讨如何使用Apache Solr 3.6的数据导入处理(DataImportHandler,简称DIH)组件从MySQL数据库中创建全文索引。Solr是一个强大的、开源的企业级搜索平台,而DIH是Solr的一个核心特性,允许用户...

    solr-dataimporthandler-extras-2:dih-jdbc-数据源

    Solr DIH JDBC 数据源这种在 Solr DIH 之上开发的目标是通过将一些设置外部化到共享配置文件,允许 DIH 配置对各种集合通用。 多个集合可以使用相同的架构和相同的 DIH 设置。 例如,SqlEntityProcessor 的query、...

    支持solr6.1-solr-dataimport-scheduler-1.2.jar

    `Solr DataImportHandler`(DIH)是 Solr 内置的一个功能,用于从关系型数据库或其他数据源导入数据,并建立索引。DIH 提供了全量和增量数据导入的功能,使得 Solr 能够保持与源数据的同步。`solr-dataimport-...

    solr7.5手动倒mysql库需要用到的jar.zip 两个jar都在压缩包里

    在与数据库集成的过程中,Solr提供了DataImportHandler(DIH)这一特性,使得能够从关系型数据库如MySQL导入数据到索引中。在你提供的压缩包中,包含了两个关键的jar文件,它们是实现Solr 7.5从MySQL数据库导入数据...

    solr实现的搜索引擎

    数据导入到Solr通常有两种方式:使用Solr DataImportHandler (DIH)从关系数据库导入,或使用SolrJ Java客户端API直接推送JSON、XML等格式的数据。在`webapp`目录下的示例可能展示了如何配置DIH来连接数据库并建立...

    solr增量更新架包apache-solr-dataimportscheduler.jar

    Solr使用DataImportHandler(DIH)来从关系型数据库、XML文件或其他数据源导入数据。DIH提供了一个全面的数据加载框架,支持全量导入和增量导入。 1. **全量导入**:全量导入是将所有数据从源数据库或文件一次性...

    修改过后的兼容solr6 solr7的dataimportscheduler.jar包

    在 Solr 中,通常使用 DataImportHandler (DIH) 来从外部数据源(如数据库)导入数据并建立索引。DIH 提供了全量导入和增量导入的能力,但默认情况下并不具备自动执行导入任务的定时功能。`dataimportscheduler` ...

    solr-dataimport-scheduler.jar 可使用于solr7.x版本

    在理解这个知识点之前,我们需要先了解Solr的基本概念以及数据导入处理(DataImportHandler,DIH)。 Apache Solr是一个开源的全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。Solr能够对大量数据进行快速的...

Global site tag (gtag.js) - Google Analytics