本文的基础环境都是在centos 64bit,jdk1.7.79

将mysql 的jar 包添加到/home/hadoop/cloudsolr/solr-4.10.4/contrib/dataimporthandler/lib 下

修改对应的solrconfig.xml 文件我的core 是collection1,配置文件example/solr/collection1/conf/solrconfig.xml

在配置文件中添加了:
  <lib dir="/home/hadoop/cloudsolr/solr-4.10.4/dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<lib dir="/home/hadoop/cloudsolr/solr-4.10.4/contrib/dataimporthandler/lib/" regex=".*\.jar" />

还是在solrconfig配置文件中

   <!-- the dataimport requestHandler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.
DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>

vim db-data-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://ip:3306/database"
user="laiba"
password="laiba123"
<span style="color:#FF0000;"> batchSize="-1"</span>/><!-- 注意:mysql中一定要batchSize="-1" 否则会报异常-->
<document>
<entity name="bns_article" pk="id"
query="select id,title,author,cover,digest, content from bns_article"
deltaImportQuery="select id,title, author, cover,digest, content from bns_article where id='${dataimporter.delta.ID}'"
deltaQuery="select id,title, author, cover, digest,content from bns_article where to_char(updatetime,'yyyy-mm-dd hh24:mi:ss')> '${dataimporter.last_index_time}'">
<field column="id" name="id"/>
<field column="title" name="title"/>
<field column="author" name="author"/>
<field column="cover" name="cover"/>
<field column="digest" name="digest"/>
<field column="content" name="content"/>
</entity>
</document>
</dataConfig>

配置entity的时候要注意的是field 第一个字段是mysql的数据库字段,name 是solr配置文件里面的字段也是在页面显示

第三:配置schema.xml文件 添加一下字段(也就是要生成索引的数据库字段) (根据上一篇IK分词的设置,也可以把字段设置成需要分词的)

添加2个字段:

   <field name="cover" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="digest" type="string" indexed="true" stored="true" multiValued="false"/>

重启服务后出现错误提示:

HTTP ERROR 500

Problem accessing /solr/. Reason:

    {msg=SolrCore 'collection1' is not available due to init failure: RequestHandler init failure,trace=org.apache.solr.common.SolrException: SolrCore 'collection1' is not available due to init failure: RequestHandler init failure
at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:745)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:347)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)

问题原因:

   <!-- the dataimport requestHandler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport. DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
将<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport. DataImportHandler"> 换行了。

解决办法:
将<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport. DataImportHandler"> 调整在一行即可

打开集群

导入数据

查询

参考地址:http://wiki.apache.org/solr/DIHQuickStart

配置多张表导入solr

配置文件 vim db-data-config.xml
  

    <document>
<entity name="bns_article" pk="id"
query="select id,title,author,cover,digest, content from bns_article"
deltaImportQuery="select id,title, author, cover,digest, content from bns_article where id='${dataimporter.delta.ID}'"
deltaQuery="select id,title, author, cover, digest,content from bns_article where to_char(updatetime,'yyyy-mm-dd hh24:mi:ss')> '${dataimporter.last_index_time}'">
<field column="id" name="id"/>
<field column="title" name="title"/>
<field column="author" name="author"/>
<field column="cover" name="cover"/>
<field column="digest" name="digest"/>
<field column="content" name="content"/>
</entity> <entity name="bns_word" pk="id"
query="select id, content, avgfreel, state, sentencenum, articlenum,updatetime, createtime from bns_word"
deltaImportQuery="select id, content, avgfreel, state, sentencenum, articlenum,updatetime, createtime from bns_word where id='${dataimporter.delta.ID}'"
deltaQuery="select id, content, avgfreel, state, sentencenum, articlenum,updatetime, createtime from bns_word where to_char(updatetime,'yyyy-mm-dd hh24:mi:ss')> '${dataimporter.last_index_time}'">
<field column="id" name="id"/>
<field column="content" name="content"/>
<field column="avgfreel" name="avgfreel"/>
<field column="state" name="state"/>
<field column="sentencenum" name="sentencenum"/>
<field column="articlenum" name="articlenum"/>
<field column="updatetime" name="updatetime"/>
<field column="createtime" name="createtime"/>
</entity>
</document>

配置schema.xml文件

添加字段:

<field name="avgfeel" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="state" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="sentencenum" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="articlenum" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="updatetime" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="createtime" type="string" indexed="true" stored="true" multiValued="false"/>

新添加mysql字段:

         <entity name="bns_sentence" pk="id"
query ="select id, uid, createname, createheadimg, wid, word, content, articlenum, state, feel, forwardnum, supportnum, updatetime, createtime from bns_sentence"
deltaImportQuery ="select id, uid, createname, createheadimg, wid, word, content, articlenum, state, feel, forwardnum, supportnum, updatetime, createtime from bns_sentence where id='${dataimporter.delta.ID}'"
deltaQuery ="select id, uid, createname, createheadimg, wid, word, content, articlenum, state, feel, forwardnum, supportnum, updatetime, createtime from bns_sentence">
<field column="id" name="id"/>
<field column="uid" name="uid"/>
<field column="createname" name="createname"/>
<field column="createheadimg" name="createheadimg"/>
<field column="wid" name="wid"/>
<field column="word" name="word"/>
<field column="content" name="content"/>
<field column="articlenum" name="articlenum"/>
<field column="state" name="state"/>
<field column="feel" name="feel"/>
<field column="forwardnum" name="forwardnum"/>
<field column="supportnum" name="supportnum"/>
<field column="updatetime" name="updatetime"/>
<field column="createtime" name="createtime"/>
</entity> <entity name ="bns_user" pk="id"
query= "select id, username, password, money, nickname, headimg, sex, articlenum, sentencenum, wordnum, createtime from bns_user"
deltaImportQuery= "select id, username, password, money, nickname, headimg, sex, articlenum, sentencenum, wordnum, createtime from bns_user where id='${dataimporter.delta.ID}'"
deltaQuery ="select id, username, password, money, nickname, headimg, sex, articlenum, sentencenum, wordnum, createtime from bns_user">
<field column="id" name="id"/>
<field column="username" name="username"/>
<field column="password" name="password"/>
<field column="money" name="money"/>
<field column="nickname" name="nickname"/>
<field column="headimg" name="headimg"/>
<field column="sex" name="sex"/>
<field column="articlenum" name="articlenum"/>
<field column="sentencenum" name="sentencenum"/>
<field column="wordnum" name="wordnum"/>
<field column="createtime" name="createtime"/>
</entity>

配置schema.xml文件

添加字段:

 <field name="uid" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="word" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="feel" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="forwardnum" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="supportnum" type="string" indexed="true" stored="true" multiValued="false"/> <field name="username" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="password" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="money" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="nickname" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="heading" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="sex" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="wordnum" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="nickname" type="string" indexed="true" stored="true" multiValued="false"/>

出现问题:就导入几条数据的时候,indexing 很慢

将Mysq数据导入solr索引库的更多相关文章

  1. 将数据库的数据导入solr索引库中

    在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例. 首先要准备jar包:solr-dataimporthandler-4.8.1.jar.solr-dataimport ...

  2. 商城06——solr索引库搭建&solr搜索功能实现&图片显示问题解决

    1.   课程计划 1.搜索工程的搭建 2.linux下solr服务的搭建 3.Solrj使用测试 4.把数据库中的数据导入索引库 5.搜索功能的实现 2.   搜索工程搭建 要实现搜索功能,需要搭建 ...

  3. 使用solrj操作solr索引库

    (solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...

  4. 使用solrj操作solr索引库,solr是lucene服务器

    客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...

  5. 如何在分布式环境中同步solr索引库和缓存信息

    天气依旧很好,主要是凉快.老习惯,我在北京向各位问好. 搜索无处不在,相信各位每天都免不了与它的亲密接触,那么我想你确实有必要来了解一下它们,就上周在公司实现的一个小需求来给各位分享一下:如何在分布式 ...

  6. solr索引库的创建

    solr索引库的创建 一.找到你安装的[solrhome]目录(我的是这个) 二.进入该目录 三.选择其中任意一个索引库复制一份到该目录下并更名为要创建的索引库名称 四.进入[myindex]目录下, ...

  7. solr 索引库的维护

    一.配置中文分析器:IK-analyzer,在FieldType中指定中文分析器:1 复制IK-analyzer到你的服务器指定目录中.2 在该目录中,我们需要的东西有:IKAnalyzer的jar包 ...

  8. Solr json,xml等文件数据导入(添加索引)linux下操作

    使用solr-5.3.1\example\exampledocs下的post.jar来完成数据导入 1.将想要导入的文件放在solr-5.3.1\example\exampledocs中,如aaa.x ...

  9. 数据添加到solr索引库后前台如何搜索

    主要结构: 查询 Dao: package com.taotao.search.dao.impl; import java.util.ArrayList; import java.util.List; ...

随机推荐

  1. php中如何实现多进程

    php中如何实现多进程 一.总结 一句话总结: php多进程需要pcntl,posix扩展支持 可以通过 php - m 查看,没安装的话需要重新编译php,加上参数--enable-pcntl,po ...

  2. error C2065: CoInitializeEx' : undeclared identifier 解决方法

    错误: error C2065: CoInitializeEx' : undeclared identifier 解决方法 原因: 本来程序的编译选项选择的是:使用标准windows库,当改为在静态库 ...

  3. Java-框架-Dubbo:Dubbo

    ylbtech-Java-框架-Dubbo:Dubbo Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成 ...

  4. 【前端控件】JQuery datepicker 日期控件设置

    datepicker控件可通过参数设置进行语言切换,以下可实现,系统所有日期控件默认为中文,在特定页面或者特定条件下可切换成英语!~ HTML: <!DOCTYPE html> <h ...

  5. springBoot使用PageHelper当超过最大页数后仍然返回数据

    在SpringBoot中使用PageHelper分页插件时,如果设置pagehelper.reasonable=true时,pageNum<=0 时会查询第一页, pageNum>page ...

  6. java-Eclipse中使用JDBC连接数据库及相关操作

    准备工作:mysql-connector-java-5.1.6-bin.jar配置 package com.job; import java.sql.Connection; import java.s ...

  7. python url编码与解码

    上代码 #codeing:utf-8 from urllib import parse ori_url_10='http://192.168.0.10:3080/asg/portal.do?call= ...

  8. 戏说 .NET GDI+系列学习教程(三、Graphics类的应用_验证码)

    关于Graphics也有了基本了解下面想说的的是学这个东东干什么呢,到底如何应用目前常见应用1.验证码(参照网上的)2.打印排版(会提到关于条形码大小设置)3.自定义控件 一.验证码 class Va ...

  9. JUC源码分析-其它工具类(一)ThreadLocalRandom

    JUC源码分析-其它工具类(一)ThreadLocalRandom ThreadLocalRandom 是 JDK7 在 JUC 包下新增的随机数生成器,它解决了 Random 在多线程下多个线程竞争 ...

  10. centos7部署汉化版gitlab

    =============================================== 2018/6/5_第7次修改                       ccb_warlock 更新说 ...