`
lxwt909
  • 浏览: 573482 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Solr
阅读更多

       Solr5中如何增量索引MySQL数据库表中的数据,这个问题之前有某个童鞋问过我,今天午休时间就腾空更新篇博客,希望能帮助到你们。

       为了测试方便,我首先从京东网站弄了点测试数据,如图:

   这里要声明下,我不是在给京东商城打广告哈,仅仅是随便找个网站弄点测试数据,这部分工作全是我无聊手动插入MySQL数据库中的,如图:

 建表SQL以及测试数据,我待会儿会上传到底下的附件里。然后你需要在solrconfig.xml配置文件中启用全量导入和增量导入请求处理器,如图:

 然后分别配置你的data-config.xml和delta-data-config.xml配置文件,具体配置如图:

 

<dataConfig>
    <dataSource name="jdbcDataSource" type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8" user="root" password="1234"/>
    <document name="mobile-doc">
        <entity dataSource="jdbcDataSource" name="mobile"  query="select * from mobile">
            <field column="id" name="id"/>
            <field column="pname" name="productName"/>
            <field column="price" name="price"/>
            <field column="color" name="color"/>
            <field column="brand" name="brand"/>
            <field column="wlan" name="wlan"/>
        </entity>
    </document>
</dataConfig>

 



 

<dataConfig>
    <dataSource name="jdbcDataSource" type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8" user="root" password="1234"/>
    <document name="mobile-doc">
        <entity dataSource="jdbcDataSource" name="mobile"  
          query="select * from mobile"
          deltaImportQuery="select * from mobile where id= ${dih.delta.id}"
          deltaQuery="select id from mobile where last_update_time &gt; '${dih.last_index_time}'">
            <field column="id" name="id"/>
            <field column="pname" name="productName"/>
            <field column="price" name="price"/>
            <field column="color" name="color"/>
            <field column="brand" name="brand"/>
            <field column="wlan" name="wlan"/>
        </entity>
    </document>
</dataConfig>

   query:表示一个查询SQL,根据你提供的查询SQL来做全量导入的

 

   deltaQuery:表示一个查询SQL语句,会根据主键id去查询这条数据,根据比对最后一次更新时间,如果最后一次更新时间大于deltaimport.properties配置文件中记录的last_index_time时间,那表示该数据更新过了,需要做增量导入,每次不管是全量导入还是增量导入,deltaimport.properties配置文件中的last_index_time时间都会更新,deltaimport.properties配置文件若不存在也会自动创建,不需要你手动创建。

   deltaImportQuery:表示一个SQL语句,即如何去加载当前数据,一般是根据主键id去查询。

   然后你需要配置下schema.xml定义一些域,如图:

 

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="productName" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
   <field name="price" type="double" indexed="true" stored="true" />
   <field name="color" type="string" indexed="true" stored="true" sortMissingLast="true"/>
   <field name="brand" type="string" indexed="true" stored="true" sortMissingLast="true"/>
   <field name="wlan" type="text_ik" indexed="true" stored="true" />


<uniqueKey>id</uniqueKey>

   最后重启你的Tomcat开始测试,如图:

 

   先做次全量导入

 全量导入成功后,请手动往数据库表里添加一条测试数据用于增量索引测试,如图:

 然后请切换到增量导入,如图:

 
接着看图:

     OK,大功告成,如果你在实践过程中出现任何问题,请联系我,solr_home整个目录以及测试数据库SQL我都会打包上传到底下的附件里,供你们参考。lib目录下依赖的jar我没上传,因为Jar包体积太大,ITeye上传不了,如果你找不到jar包,请参阅我的这篇博客

《跟益达学Solr5之索引文件夹下所有文件》,在那篇博客里有提供jar包的百度网盘下载地址,特此提醒!!!

 

     如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,

或者加裙
一起交流学习!


 

       

  • 大小: 303.2 KB
  • 大小: 96.3 KB
  • 大小: 73.2 KB
  • 大小: 51.8 KB
  • 大小: 72.6 KB
  • 大小: 49.6 KB
  • 大小: 71.5 KB
  • 大小: 99 KB
  • 大小: 68.4 KB
  • 大小: 76.3 KB
10
1
分享到:
评论
9 楼 kingxianstar 2018-01-19  
8837One_day 写道
你好作者,所有的配置文件都配置了,在数据库中也添加新的一条数据,但是使用增量导入时还是不能导进新增的那条数据呢?我用的solr是4.6的,数据库用的是oracle

增量导入的问题解决了么?我也遇到了,我用的是solr5.1 ,也是用的oracle
8 楼 8837One_day 2017-11-16  
你好作者,所有的配置文件都配置了,在数据库中也添加新的一条数据,但是使用增量导入时还是不能导进新增的那条数据呢?我用的solr是4.6的,数据库用的是oracle
7 楼 lp1111111 2015-12-14  
去掉clean选项就可以了
6 楼 lp1111111 2015-12-14  
增量索引成功了,但是之前的全量索引不见了,query的时候只有最后增量的数据,这是勾选了clean选项。
【clean:表示是否在导入数据创建索引之前先清空掉原有的索引】
5 楼 Jeremy__Pan 2015-12-13  
呵呵,作者您好,我又来了。。。根据您的这个教程(我使用solr5.2) 遇到一个问题,

java.sql.SQLException: Illegal value for setFetchSize()

我不知道其他版本有没有这个问题,就添在评论里,作者见谅

在 data-config.xml和delta-data-config.xml 的 dataSource 加上 batchSize="-1″ 就可以解決這個問題囉!【http://tech.crazyall.net/3170/solr-%E6%95%99%E5%AD%B8-5-%E5%BB%BA%E7%AB%8B%E6%96%B0%E7%9A%84-core】


4 楼 Jeremy__Pan 2015-12-05  
Jeremy__Pan 写道
您好,我按照你的这个来,但是在 dataimport 那里一直转的。木有出来页面,查看浏览器 js 出错了  Uncaught ReferenceError: naturalSort is not defined :8080/solr/js/lib/naturalSort.js?_=5.2.0:30 Uncaught SyntaxError: Unexpected token ILLEGAL    solr5.2  




原来是solr的js 文件写错了。。。。。今天解决了啊。。。太坑了

https://issues.apache.org/jira/browse/SOLR-7588

naturalSort.js 文件代码修改为 https://github.com/jarinudom/naturalSort.js/blob/master/dist/naturalSort.js
就可以看见 dataimport 页面了
3 楼 Jeremy__Pan 2015-12-03  
您好,我按照你的这个来,但是在 dataimport 那里一直转的。木有出来页面,查看浏览器 js 出错了  Uncaught ReferenceError: naturalSort is not defined :8080/solr/js/lib/naturalSort.js?_=5.2.0:30 Uncaught SyntaxError: Unexpected token ILLEGAL    solr5.2  
2 楼 fengyong7723131 2015-10-15  
增量索引成功了,但是之前的全量索引不见了,query的时候只有最后增量的数据,这是怎么回事呢?
1 楼 有翅膀的灰机 2015-05-29  
感谢益达,我只弄过手动的还没弄过DIH的,学习

相关推荐

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

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

    跟益达学Solr5之批量索引JSON数据

    《Solr5批量索引JSON数据详解》 在大数据时代,高效检索与分析大量文本信息是企业业务中不可或缺的一部分。Apache Solr,作为一款强大的开源搜索引擎,提供了对JSON等多格式数据的快速索引和查询能力。本篇将深度...

    跟益达学Solr5之索引文件夹下所有文件

    总之,"跟益达学Solr5之索引文件夹下所有文件"教程涵盖了从安装配置Solr5,创建核心,配置文件索引,到数据导入,查询优化以及监控维护等一系列步骤。通过学习这些内容,你可以掌握如何利用Solr5构建一个强大的文件...

    跟益达学Solr5之索引网络上远程文件

    本篇我们将深入探讨如何利用Solr5来索引网络上的远程文件,让数据检索的触角延伸到互联网的每一个角落。 首先,理解Solr的基本架构至关重要。Solr是以Lucene为基础的搜索服务器,它提供了分布式、可扩展、高可用的...

    跟益达学Solr5之使用Tika从PDF中提取数据导入索引

    在本篇博文中,“跟益达学Solr5之使用Tika从PDF中提取数据导入索引”,我们将探讨如何利用Apache Solr 5和Tika这两个强大的开源工具,从PDF文档中抽取数据并将其有效地导入到Solr索引库中。Apache Solr是一款功能...

    转自:跟益达学Solr5之玩转post.jar

    《跟益达学Solr5之玩转post.jar》这篇博文主要探讨了如何利用Solr的`post.jar`工具进行数据导入,这是Solr提供的一个非常实用的功能,用于快速将各种格式的数据导入到Solr索引中。在这个过程中,我们不仅会了解`post...

    跟益达学Solr5之使用IK分词器

    本篇将围绕“跟益达学Solr5之使用IK分词器”这一主题,详细讲解如何在Solr5中集成并运用IK分词器,以及它的工作原理和优化技巧。 首先,让我们了解下什么是分词器。在中文搜索引擎中,由于中文句子没有明显的分隔符...

    跟益达学Solr5之使用Ansj分词器

    《跟益达学Solr5之使用Ansj分词器》 在中文信息检索和文本分析领域,分词是至关重要的第一步。Solr,作为一款强大的开源搜索平台,提供了多种分词器供用户选择,其中之一就是Ansj分词器。这篇文章将深入探讨如何在...

    跟益达学Solr5之拼音分词

    《Solr5拼音分词深度解析》 在深入探讨Solr5的拼音分词之前,首先需要理解什么是Solr。Apache Solr是一款基于Lucene的开源搜索引擎,它提供了全文搜索、命中高亮、 faceted search(面向切面的搜索)、自动完成、...

    跟益达学Solr5之使用MMSeg4J分词器

    《Solr5与MMSeg4J分词器深度解析》 在中文信息检索和文本分析领域,分词是至关重要的第一步。Solr,作为一款强大的开源全文搜索引擎,提供了多种分词器供用户选择,其中之一就是MMSeg4J。本篇文章将带你深入学习...

    Solr 权威指南上下卷

    国内较早接触Solr的技术专家之一,长期致力于Solr的技术研究、实践和生产环境部署,是Solr社区的积极参与者和实践者,以让Solr技术能够在中国得到广泛应用不遗余力并乐此不疲。现就职于国美金融,曾就职于各种大大...

    mysql面试题-电商零售数据分析

    该资源为utf-8格式的csv文件,可以直接根据列名建表后插入mysql数据库表。但使用excel打开时会出现中文乱码,可以先用记事本将其编码格式改为ANSI,再使用excel打开。 3. 适合人群: 初中级数据分析师,1-3年相关...

    mysql5.5(服务器+客户端)

    2. **Full-text Search**:MySQL 5.5 引入了全文索引和搜索功能,这使得在大量文本数据中进行复杂查询变得更加高效。 3. **分区功能增强**:表分区是优化大数据处理的一种手段,5.5 版本增加了更多的分区策略和优化...

    mySql的初级基础必会练习题

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中被广泛应用。对于初学者来说,掌握MySQL的基础知识是至关重要的,因为这将为理解和处理数据提供坚实的基础。本压缩包包含了一系列针对初级...

Global site tag (gtag.js) - Google Analytics