本文的基础环境都是在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. 14、java实现poi操作excel,包括读和写日期格式,并且设置字体样式

    1.首先大家来看导出的结果 下边就是导出的代码了 protected void testExcel() throws IOException{ String path=getServletContex ...

  2. Mysql数据库命令行输入错误怎么办

    Mysql数据库命令行输入错误 缺少另一半 错误输入 ' 或 " 时,必须键入另一半才能退出命令. 缺少分号 写入语句缺少分号需要补全. 输入quit或者exit退出 ctrl+c,完全退出 ...

  3. playbackRate控制音频播放倍速

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. box-shadow单侧投影,双侧投影,不规则图案投影

    底部投影box-shadow: 0 5px 4px -4px black; 底部右侧投影 3px 3px 6px -3px black 两侧投影 box-shadow: 7px 0 7px -7px ...

  5. NetCore2.2使用Nlog自定义日志写入路径配置方式

    在一些特定场景的业务需求下,日志需要写入到不同的路径下提供日志分析.第一种:默认Nlog可以通过日志级别来区分路径,——优点是不需要额外配置,开箱即用——缺点是不够灵活,如果超过级别数量,则不满足需求 ...

  6. chrome无法拖拽离线安装CRX格式插件解决方法

    原文:http://chromecj.com/utilities/2018-09/1525.html 摘要 : chrome 67版本后无法拖拽离线安装CRX格式插件的解决方法   有一部分网友反映子 ...

  7. 从零开始搭建系统2.5——Apollo安装及配置

    参见https://github.com/ctripcorp/apollo/wiki/Quick-Start安装即可

  8. 7.Struts2框架封装数据

    Struts2框架提供了很强大的数据封装的功能,不再需要使用Servlet的API完成手动封装了!! 第一种方式:属性驱动 > 提供对应属性的set方法进行数据的封装.--经常使用 * 表单的哪 ...

  9. jq-demo-购物车

    首页 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title& ...

  10. Redis探索之路(一):Redis简介

    一:NOSQL NotOnlySQL 反SQL运动,非关系型数据库(区别于Mysql关系型书库). 随着Web2.0兴起,“高性能”,“高并发”成为主流. NoSQL以key-value形式存储数据, ...