将Mysq数据导入solr索引库
本文的基础环境都是在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索引库的更多相关文章
- 将数据库的数据导入solr索引库中
在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例. 首先要准备jar包:solr-dataimporthandler-4.8.1.jar.solr-dataimport ...
- 商城06——solr索引库搭建&solr搜索功能实现&图片显示问题解决
1. 课程计划 1.搜索工程的搭建 2.linux下solr服务的搭建 3.Solrj使用测试 4.把数据库中的数据导入索引库 5.搜索功能的实现 2. 搜索工程搭建 要实现搜索功能,需要搭建 ...
- 使用solrj操作solr索引库
(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...
- 使用solrj操作solr索引库,solr是lucene服务器
客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...
- 如何在分布式环境中同步solr索引库和缓存信息
天气依旧很好,主要是凉快.老习惯,我在北京向各位问好. 搜索无处不在,相信各位每天都免不了与它的亲密接触,那么我想你确实有必要来了解一下它们,就上周在公司实现的一个小需求来给各位分享一下:如何在分布式 ...
- solr索引库的创建
solr索引库的创建 一.找到你安装的[solrhome]目录(我的是这个) 二.进入该目录 三.选择其中任意一个索引库复制一份到该目录下并更名为要创建的索引库名称 四.进入[myindex]目录下, ...
- solr 索引库的维护
一.配置中文分析器:IK-analyzer,在FieldType中指定中文分析器:1 复制IK-analyzer到你的服务器指定目录中.2 在该目录中,我们需要的东西有:IKAnalyzer的jar包 ...
- Solr json,xml等文件数据导入(添加索引)linux下操作
使用solr-5.3.1\example\exampledocs下的post.jar来完成数据导入 1.将想要导入的文件放在solr-5.3.1\example\exampledocs中,如aaa.x ...
- 数据添加到solr索引库后前台如何搜索
主要结构: 查询 Dao: package com.taotao.search.dao.impl; import java.util.ArrayList; import java.util.List; ...
随机推荐
- python实现收邮件判断模块poplib,email
一.代码 # 输入邮件地址, 口令和POP3服务器地址: import datetime import email import poplib import email.policy from ema ...
- js委托事件-addEventListeners(冒泡方向)
JQuery中live().delegate().on()事件都能给新增元素绑定事件,原理就是用了事件委托. 实例: 给id为div的元素绑定一个click委托,如果冒泡上来的元素是P元素就会执行al ...
- cgo 和 Go 语言是两码事
cgo不是Go 借用 JWZ的一句话 有些人,当他们面临一个问题时,认为“我知道,我会使用 cgo ”.那么现在,他们有了两个问题. 最近有人在 Gopher 的 Slack Channel 上使用 ...
- python安装 cvxpy 巨坑,一堆C++错误
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos 下载scs,ecos,cvxpy的whl,一个个安装即可 之前被一堆C++错误搞晕了2小时
- libvert开启TCP监听
1.设置libvirtd 编辑/etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 auth_tcp="none" tc ...
- 树莓派安装omv
1.Win32DiskImager写入光盘镜像 2.进入omv页面 设置 ip 端口号 ,设置时间,设置ssh打开,设置会话超时时间 ××××设置 dns 很重要!! #这里用的是阿里云的DNS服务 ...
- 自旋锁spinlock
1 在单处理器上的实现 单核系统上,不存在严格的并发,因此对资源的共享主要是多个任务分时运行造成的. 只要在某一时段,停止任务切换,并且关中断(对于用户态应用程序,不大可能与中断处理程序抢临界区资源) ...
- 机器学习技法笔记:02 Dual Support Vector Machine、KKT
原文地址:https://www.jianshu.com/p/58259cdde0e1 Roadmap Motivation of Dual SVM Lagrange Dual SVM Solving ...
- PAT_A1084#Broken Keyboard
Source: PAT A1084 Broken Keyboard (20 分) Description: On a broken keyboard, some of the keys are wor ...
- Gerrit(1): Manage Projects
1) Register an openid account https://login.ubuntu.com/+login 2) Custom settings set SSH pubkey set ...