第一步:创建core

core是solr的特有概念,每个core是一个查询数据,、索引等的集合体,你可以把它想象成一个独立数据库,我们创建一个新core:名字[core1]

进入linux命令行,进入到solr的bin目录,执行如下命令:

cd /usr/local/solr/bin

./solr create -c core1 -force      // -c 指定要创建的Core名称 root用户启动需要增加 -force

第二步:准备数据导入配置

1、修改/usr/local/solr/server/solr/core1/conf 目录下的solrconfig.xml

增加内容如下:注意不要放到其他requestHandler里面,放在已经存在的</requestHandler> 节点后面!

<requestHandler name="/dataimport" class="solr.DataImportHandler">

<lst name="defaults">

<str name="config">data-config.xml</str>

</lst>

</requestHandler>

requestHandler请求处理器,定义了索引和搜索的访问方式。

通过/dataimport进行数据导入,可以完成从MYSQL数据库导入数据到Solr的操作。

data-config.xml文件是自己制定的数据源描述文件,名字可以随便取。

2、/usr/local/solr/server/solr/core1/conf 目录下新建data-config.xml

<dataConfig>

<dataSource name="sgk" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.112:3306/mydb" user="root" password="123" batchSize="-1" />

<document name="mydoc">

<entity name="product" query="SELECT pid,name,catalog_name,price,picture FROM products ">

<field column="pid" name="id"/>

<field column="name" name="product_name"/>

<field column="catalog_name" name="product_catalog_name"/>

<field column="price" name="product_price"/>

<field column="picture" name="product_picture"/>

</entity>

</document>

</dataConfig>

2、修改/usr/local/solr/server/solr/core1/conf 目录下managed-schema文件中添加如下内容:

<field name="product_name" type="text_ik" indexed="true" stored="true"/>

<field name="product_price"  type="pfloat" indexed="true" stored="true"/>

<field name="product_picture" type="string" indexed="false" stored="true" />

<field name="product_catalog_name" type="string" indexed="true" stored="true" />

<field name="product_keywords" type="text_ik" (string) indexed="true" stored="false" multiValued="true"/>

<copyField source="product_name" dest="product_keywords"/>

field配置参数说明:

l  Name:域的名称

l  Type:域的类型

l  Indexed:是否索引

l  Stored:是否存储

l  multiValued:是否是多值,存储多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小图)

copyField(复制域):

可以将多个Field复制到一个Field中,以便进行统一的检索。当创建索引时,solr服务器会自动的将源域的内容复制到目标域中。

l  source:源域

l  dest:目标域,搜索时,指定目标域为默认搜索域,可以提供查询效率。

第三步:安装中文分词

因为solr虽然内置中文分词,但效果并不好,我们需要添加IKAnalyzer中文分词引擎来查询中文。在https://github.com/EugenePig/ik-analyzer-solr5

1、下载IKAnalyzer for solr5的源码包,然后使用Maven编译,得到一个文件IKAnalyzer-5.0.jar,把它放入/usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib目录中

2、修改managed-schema在最后加入以下内容:

<fieldType name="text_ik" class="solr.TextField">

<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

第四步:上传相关类库

1、要导入mysql数据,需要MYSQL类库:

mysql-connector-java-bin.jar

2、导入数据需要  /usr/local/solr/dist目录下面的2个jar包

solr-dataimporthandler-7.2.1.jar

solr-dataimporthandler-extras-7.2.1.jar

3、上传3个jar包到 /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib目录中

4、重启solr

cd /usr/local/solr/bin

./solr restart -force                    //root用户启动需要增加 -force

第五步:添加更新配置文件

solr-6.6.0/server/solr下新建conf文件夹

在solr-6.6.0/server/solr/conf/conf下新建dataimport.properties文件

配置:

#################################################
# #
# dataimport scheduler properties #
# #
################################################# # to sync or not to sync
# 1 - active; anything else - inactive
syncEnabled=1
# which cores to schedule
# in a multi-core environment you can decide which cores you want syncronized
# leave empty or comment it out if using single-core deployment
#syncCores=game,resource
syncCores=search_node
# solr server name or IP address
# [defaults to localhost if empty]
server=localhost
# solr server port
# [defaults to 80 if empty]
port=9090
interval=2
# application name/context
# [defaults to current ServletContextListener's context (app) name]
webapp=solr
# URL params [mandatory]
# remainder of URL
params=/dataimport?command=delta-import&clean=false&commit=true
# schedule interval
# number of minutes between two runs
# [defaults to 30 if empty] # 重做索引的时间间隔,单位分钟,默认7200,即5天;
# 为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=7200 # 重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true # 重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
# 两种格式:2012-04-11 03:10:00 或者 03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:10:00

如果不配置reBuildIndexBeginTime会导致报错, Unable to convert 'interval' to number 00:00:00

这个是源码中的bug,

if ((this.reBuildIndexBeginTime == null) || (this.reBuildIndexBeginTime.isEmpty()))
this.interval = "00:00:00";

启动 solr-6.6.0/bin/solr start -port 9090

重启 solr-6.6.0/bin/solr restart -port 9090

solr实时更新mysql数据的方法的更多相关文章

  1. WebSocket 实时更新mysql数据到页面

    使用websocket的初衷是,要实时更新mysql中的报警信息到web页面显示 没怎么碰过web,代码写的是真烂,不过也算是功能实现了,放在这里也是鞭策自己,web也要多下些功夫 准备 引入依赖 & ...

  2. 使用Logstash来实时同步MySQL数据到ES

    上篇讲到了ES和Head插件的环境搭建和配置,也简单模拟了数据作测试 本篇我们来实战从MYSQL里直接同步数据 一.首先下载和你的ES对应的logstash版本,本篇我们使用的都是6.1.1 下载后使 ...

  3. PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法

    对于Model/View中视图的数据编辑后怎么能实时获取编辑的数据变动位置和变动情况查阅了一些资料,终于基本弄明白必须重写Model的setData方法才能截获.setData方法是视图中各种角色数据 ...

  4. android ListView中含有按钮事件实时更新ListView数据案例

    1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...

  5. flume实时采集mysql数据到kafka中并输出

    环境说明 centos7(运行于vbox虚拟机) flume1.9.0(flume-ng-sql-source插件版本1.5.3) jdk1.8 kafka(版本忘了后续更新) zookeeper(版 ...

  6. 用solr DIH 实现mysql 数据定时,增量同步到solr

    基础环境: (二)设置增量导入为定时执行的任务: 很多人利用Windows计划任务,或者Linux的Cron来定期访问增量导入的连接来完成定时增量导入的功能,这其实也是可以的,而且应该没什么问题. 但 ...

  7. Python tkinter库将matplotlib图表显示在GUI窗口上,并实时更新刷新数据

    代码 1 ''' 2 使用matplotlib创建图表,并显示在tk窗口 3 ''' 4 import matplotlib.pyplot as plt 5 from matplotlib.pylab ...

  8. Web实时更新客户端数据

    1        轮询方式实现客户端数据及时更新 在基于Web的即时通信.股票行情这样的系统中,需要客户端能够及时更新内容.由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求, ...

  9. MySQL数据备份方法

    MySQL的备份和还原 备份:副本    RAID1,RAID10:保证硬件损坏而不会业务中止:        DROP TABLE mydb.tb1; 备份类型:        热备份.温备份和冷备 ...

随机推荐

  1. Project Tango Explorer

    https://sensortower.com/android/ie/projecttango-google/app/project-tango-explorer/com.projecttango.t ...

  2. 20169205 2016-2017-2 实验四 SQL注入实验

    20169205 2016-2017-2 实验四 SQL注入实验 实验介绍 SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术.通过把SQL命令插入到Web表单提交框. ...

  3. 测试用数据库表设计和SessionFactory

    本篇为struts-2.5.2和spring-3.2.0以及hibernate-4.2.21的整合开篇. 一.测试的数据库表. 用户.角色和权限关系表.数据库是Mysql5.6.为了考虑到一些特殊数据 ...

  4. 装饰者模式及C++实现

    装饰者模式 时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一些功能,最简单的做法就是修改接口,添加函数, ...

  5. persona 典型用户

    1.姓名:王涛 2.年龄:22 3.收入:基本无收入 4.代表用户在市场上的比例和重要性:王涛为铁道学生.本软件的用户主要是学生和老师,尤其是广大的铁大学子,所以此典型用户的重要性不言而喻,而且比例相 ...

  6. Android-有序广播

    在之前的博客,Android-广播概念,中介绍了(广播和广播接收者)可以组件与组件之间进行通讯,有两种类型的广播(无序广播 和 有序广播),这篇博客就来讲解有序广播的代码实现: 有序广播:接收者 可以 ...

  7. memory leak-----tomcat日志warn

    web应用借助于结构:spring mvc + quartz结构,部署到tomcat容器时,shutdown时的error信息: appears to have started a thread na ...

  8. Async 和 Await 的异步编程 资料汇总

    使用 Async 和 Await 的异步编程 https://msdn.microsoft.com/zh-cn/library/hh191443(v=vs.120).aspx 异步程序中的控制流 ht ...

  9. 【cocos2d-x 手游研发小技巧(3)Android界面分辨率适配方案】

    先感叹一下吧~~android的各种分辨率各种适配虐我千百遍,每次新项目我依旧待它如初恋···· 每家公司都有自己项目工程适配的方案,这种东西就是没有最好,只有最适合!!! 这次新项目专项针对andr ...

  10. OpenResty 最佳实践 (1)

    此文已由作者汤晓静授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. OpenResty 发展起源 OpenResty(也称为 ngx_openresty)是一个全功能的 Web ...