本文的基础环境都是在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. delphi 文件操作(信息获取)

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...

  2. (转)微信,QQ这类IM app怎么做——谈谈Websocket

    转:http://www.cocoachina.com/ios/20160527/16482.html 前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕 ...

  3. Ubuntu下设置静态网址

    百度上找的图形界面下设置方式: 因为我这里的ubuntu版本是14.10版本 所以我先点击[系统设置],它位置在桌面左侧的菜单栏后面位置. 在系统设置页面,找到[硬件]选项里面的[网络]一项 然后再使 ...

  4. TI低功耗蓝牙(BLE)介绍【转】

    转自:http://blog.csdn.net/ooakk/article/details/7302425 TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth L ...

  5. Linux权限简析

  6. Java Jar Manifest

    JAR文件可以可选地在META-INF目录中包含名为MANIFEST.MF的Manifest文件.Manifest文件包含有关JAR文件及其条目的信息.Manifest文件可以包含有关JAR文件的CL ...

  7. [未解决]报错:DeprecationWarning: decodestring() is a deprecated alias since Python 3.1, use decodebytes()

    DeprecationWarning: decodestring() is a deprecated alias since Python 3.1, use decodebytes()

  8. 通过start.spring.io生成的springboot项目,导入IDE后POM第一行报错

    通过problem控制台查看,显示unknown 尝试降低springboot版本,问题没了,应该是与maven jdk等版本冲突导致 这里JDK 1.8  mave 3.6.1  降低springb ...

  9. 矢量切片应用中geoserver与geowebcache分布式部署方案

    在进行GIS项目开发中,常使用Geoserver作为开源的地图服务器,Geoserver是一个JavaEE项目,常通过Tomcat进行部署.而GeoWebCache是一个采用Java实现用于缓存WMS ...

  10. 在vue中运用mt-loadmore 实现上拉加载,下拉刷新

    元旦了,给手残党直接复制的机会,代码如下: 1. :style="{'-webkit-overflow-scrolling': scrollMode}" 最外层div设置,以便兼容 ...