`

solr 处理数据库数据索引 DataImportHandler 的使用[转]

阅读更多

1、编辑 solrconfig.xml 注册一个请求 uri 为 "/dataimport" 的请求处理器(org.apache.solr.handler.dataimport.DataImportHandler),代码如:

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

2、创建 data-config.xml 文件放到 solr.home/conf 目录下,内容如下:

  1. <dataConfig>  
  2.   <dataSource type="JdbcDataSource"  
  3.               driver="com.mysql.jdbc.Driver"  
  4.               url="jdbc:mysql://localhost/dbname"  
  5.               user="user-name"  
  6.               password="password"/>  
  7.   <document>  
  8.     <entity name="id"  
  9.             query="select id,name from mytable">  
  10.     </entity>  
  11.   </document>  
  12. </dataConfig>  

3、在 schema.xml 里创建 id 与 name 的字段声明。

4、把 mysql 的 jdbc.jar 放到 solr.home/lib 目录下。

5、启动 solr 后,执行命令:

http://localhost:8080/solr/dataimport?command=full-import 这 url 告诉 solr 做全量索引,做索引中会删除所有数据。当然也可以用 clean=false 参数来告诉它不删除,但也会删除相同id的(在 scheam.xml 的uniqueKey 声明的)。http://localhost:8080/solr/dataimport?command=full-import&clean=false

上面的是 mysql 字段与 scheam.xml 声明的一样,当然不一样时可以用 sql 的 as 来使它们一样。

还可以用 data-config.xml 里指定,如:

  1. <dataConfig>  
  2.   <dataSource type="JdbcDataSource"  
  3.               driver="com.mysql.jdbc.Driver"  
  4.               url="jdbc:mysql://localhost/dbname"  
  5.               user="user-name"  
  6.               password="password"/>  
  7.   <document>  
  8.     <entity name="id"  
  9.             query="select id,name from mytable">  
  10.        <field column="id" name="solr_id"/>  
  11.        <field column="name" name="solr_name"/>  
  12.     </entity>  
  13.   </document>  
  14. </dataConfig>  

entity/field 中的 name 是指 scheam.xml 里指定的,column 是 sql 里出来的字段。

大多数,做索引时的数据不是在一个表里的,比较一对多的。DIH 还提供多表取数据。

把 data-config.xml 改为:

  1. <dataConfig>  
  2.   <dataSource type="JdbcDataSource"  
  3.               driver="com.mysql.jdbc.Driver"  
  4.               url="jdbc:mysql://localhost/dbname"  
  5.               user="user-name"  
  6.               password="password"/>  
  7.   <document>  
  8.     <entity name="outer"  
  9.             query="select id,name,desc from mytable">  
  10.        <field column="id" name="solr_id"/>  
  11.        <field column="name" name="solr_name"/>  
  12.        <entity name="inner"  
  13.                query="select details from another_table where id ='${outer.id}'">  
  14.               <field column="details" name="solr_details"/>  
  15.        </entity>  
  16.     </entity>  
  17.   </document>  
  18. </dataConfig>  

在 scheam.xml 里指定 solr_details 字段为多值的 multiValued="true"。在上面 inner entity 里的 sql 语句可以加参数 ${outer.id} 就是 mytable 的 id 字段。

修改好后,重启,再做一次索引就有效果了,一对多一个缺点是会有 N+1 个 sql 查询。对小数据量的索引合适用 solr data import。

分享到:
评论

相关推荐

    Solr数据库插入(全量和增量)索引

    使用 DIH,我们可以将数据从 Oracle 数据库中提取出来,然后将其插入 Solr 索引库中。 增量索引 增量索引是指将新添加或更新的数据插入 Solr 索引库中,一般用于批量更新数据的情况。在这种情况下,我们需要将新...

    跟益达学Solr5之增量索引MySQL数据库表数据

    在这个主题“跟益达学Solr5之增量索引MySQL数据库表数据”中,我们将深入探讨如何利用Solr 5来实现对MySQL数据库表数据的增量索引,以便在搜索时获得实时更新的结果。 首先,我们需要理解什么是增量索引。在传统的...

    solr-dataimporthandler的jar包

    1. `solr-dataimporthandler-6.0.1.jar`:这是 DIH 的主库,包含了处理数据导入过程所需的类和方法。它提供了数据源连接、查询执行、数据转换以及索引创建等功能。在 Solr 的 lib 目录下添加此 JAR 文件后,Solr 将...

    solr6--solr-dataimporthandler-scheduler-1.1

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

    solr7.4数据库导入Demo(mysql数据库)

    在Solr 7.4版本中,我们可以通过数据导入工具(DataImportHandler, DIH)来实现数据库中的数据导入,以便进行全文搜索和分析。本Demo将展示如何使用Solr 7.4与MySQL数据库集成,实现数据导入,并结合IK分词器提升...

    solr连接数据库配置

    这篇博客“solr连接数据库配置”可能是关于如何在Solr中设置和管理与数据库的连接,以便索引和查询来自数据库的数据。 首先,我们需要理解Solr的数据导入处理器(DataImportHandler,DIH)。DIH是Solr的一个模块,...

    solr-dataimporthandler.rar

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

    solr增量导入更新索引包

    增量导入更新索引包是Solr中的一项重要功能,它允许系统仅处理自上次完整索引以来发生改变的数据,从而大大提升了效率并降低了资源消耗。下面将详细阐述Solr增量更新的相关知识点。 1. **Solr的索引机制** Solr...

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

    DataImportHandler是Apache Solr的一个特性,它允许Solr从外部数据源导入数据,如数据库、文件系统或其他Web服务。DIH的主要目的是简化索引过程,使Solr能够动态地、增量地更新其索引,而无需每次变更都完全重建索引...

    solr-dataimporthandler-scheduler-1.1

    DataImportHandler-Scheduler 插件则增强了这个功能,它允许用户设定定时任务,自动监测数据源的变化,并仅导入新的或更新的数据,从而减少了不必要的全量索引重建,提高了系统的性能和响应速度。 在源码包 "solr-...

    跟益达学Solr5之从MySQL数据库导入数据并索引

    《跟益达学Solr5之从MySQL数据库导入数据并索引》这篇文章主要探讨了如何使用Apache Solr 5从MySQL数据库中导入数据并建立索引,以便进行高效的全文搜索。Solr是一款强大的开源搜索服务器,它提供了丰富的查询语言、...

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

    Apache Solr是一款强大的开源搜索引擎,它能够高效地处理和索引大量数据,提供快速的全文检索、 faceting、高亮显示等高级功能。在实际应用中,为了保持搜索结果的实时性,我们往往需要将数据库中的数据实时或定时...

    基于solr的网站索引架构(一)

    这通常通过Solr的DataImportHandler完成,它可以连接到数据库,抽取数据并转化为Solr可理解的格式。索引过程包括解析、分析和存储,其中分析阶段会应用分词器和过滤器对文本进行处理。 5. **Schema设计**: Schema...

    solr在tomcat下的搭建和配置数据库

    这里通过`data-config.xml`文件配置了Solr的数据源连接以及SQL查询语句,使得Solr能够从数据库中读取数据并索引。 **总结** 以上步骤详细介绍了如何在Tomcat环境下搭建Solr服务,并配置Solr与数据库之间的连接。...

    solr4.7从数据库导数据[归类].pdf

    Solr 4.7 是一个流行的全文搜索引擎,它允许用户通过数据导入处理器(DataImportHandler, DIH)从关系型数据库如 SQL Server 导入数据并建立索引,以实现快速搜索。在这个教程中,我们将深入理解如何在 Solr 4.7 中...

    solr定时索引

    在Solr中,通常会配合数据导入工具DataImportHandler (DIH) 使用,通过LastModified或者UniqueKey来判断哪些记录需要更新。 完整索引:完整索引则是在预设时间点重新创建整个索引,覆盖现有索引。这适用于数据变动...

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

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

    使用MySQL作为SOLR的索引源

    在SOLR中,这通常通过DataImportHandler (DIH) 实现,这是一个内建的数据导入工具,允许从外部数据源如MySQL获取数据并建立索引。配置过程包括以下几个步骤: 1. **配置SOLR核心**:在SOLR的`solrconfig.xml`配置...

Global site tag (gtag.js) - Google Analytics