尚未实现首次同步mysql数据库的,请参考我的另一篇文章http://www.cnblogs.com/zhuwenjoyce/p/6512378.html(solr6.4.1搜索引擎同步mysql数据库)
 
过时的类
在solr6.4.1版本中,已无HttpSolrServer这个类,但是有SolrClient类,也无SolrServer这个类,取而代之的是EmbeddedSolrServer类,但即使EmbeddedSolrServer类也是继承自SolrClient类,所以网上所有能查到对这些类进行描述的文章都已过时。
话说就在这一两天研究solr期间,solr6.4.2版本已在3月6号发布了~~呃~~
看solr-solrj-6.4.1的源码,SolrClient从solr5.0版本开始代替SolrServer:
solr6.4.1在线API,可以查看所有的类:
 
solr管理界面增量导入mysql数据库
在浏览器管理界面,首先当然是选择一个core,我这里选择core3
 
选择core3下的Dataimport菜单
首先当然是校验db-data-config.xml配置文件是否正确,点击Reload按钮(如下图),当显示No information available时,表示配置文件无异常,当然这次不要选择full-import(全量导入),选择delta-import(增量导入),千万别选择Clean,因为会致使原有导入数据索引全部清空,然后只做更新部分的数据导入,如果此次只更新了一条数据,那么你的solr此core里就变成了仅有一条数据!
可以选择Commit,我现在对于这个选项的理解是:把内存中的索引文件fsync到磁盘,并创建一个index descriptor。这里比较耗费机器资源。这样即使jvm崩溃或者宕机,也不影响这部分索引。(参考http://blog.sina.com.cn/s/blog_6277623c0102v40x.html
可以选择Optimize,
optimize到底干了什么? 该如何使用?(参考http://blog.csdn.net/java_zys/article/details/52372635
查资料才发现,optimize其实是个很重量级的操作,执行optimize操作后solr会进行索引数据的合并来优化查询性能,如果索引数据很大,optimize则会花费很多的时间,如果你在批量提交文档后每次都进行optimize操作,无疑提交速度会越来越慢,最后甚至导致solr不再响应你的提交请求。另外,如果你的服务是主从模式,那么对master的optimize还会导致整个索引块同步到replica上,影响就更加可想而知了。optimize操作可以优化查询性能,所以还是有用的,可以在服务不忙的时候在solr自带的控制台手动执行optimize操作,也可以写个定时任务来完成。
 
增量导入注意事项
大家可以看到在上图中,entity标签里,query属性的select语句与deltaQuery属性的select语句是不一样的,差异在于多了一个where modify_date > '${dataimporter.last_index_time}'.
这是因为solr每次在全量导入时或者增量导入结束时,都会在solrhome\conf\dataimport.properties文件中为每一个entity更新一个导入时间标志,我本地截图如下:
这个配置文件里的属性对象可以在db-data-config.xml里以${}占位符方式填充数值。
重点1:所以在执行deltaQuery时,只会导入数据满足为:modify_date > '${dataimporter.last_index_time}',以此实现增量导入。否则就是全量导入!!!
重点2:在deltaQuery语句中,select字段一定要加上你想更新到索引的字段,否则默认不导入为索引!!
 
solr浏览器管理界面增加索引数据
solr也支持在浏览器管理界面增加索引数据,但此类增加并不会同步到mysql数据库中去,要使它同步,好像也是可以的,就是设置起来比较复杂,而且还需要考虑性能方面。
选择core3,点击Documents菜单:
在Document(s)输入框里输入要增加的索引数据(可同时增加多个),注意,这里的数据格式一定要与Document Type输入框里的数据类型保持一致,至于/update则来源于默认的solrconfig.xml配置文件,该文件的requestHandler标签定义了这些行为,比如/select /update 你也可以自定义一些其他标签。
执行Submit Document按钮之后,solr服务器响应结果如下:
status:0 表示索引插入操作执行成功。
QTime 的执行单位是毫秒ms。
 
其它以java代码使用solrJ-api接口也是可以导入索引的,这个另外文章再介绍。
 

solr6.4.1搜索引擎(3)增量同步mysql数据库的更多相关文章

  1. solr6.4.1搜索引擎(2)首次同步mysql数据库

    尚未成功启动solr的,请参考我的另一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎启动eclipse启动) ...

  2. 使用canal增量同步mysql数据库信息到ElasticSearch

    本文介绍如何使用canal增量同步mysql数据库信息到ElasticSearch.(注意:是增量!!!) 1.简介 1.1 canal介绍 Canal是一个基于MySQL二进制日志的高性能数据同步系 ...

  3. solr6.4.1搜索引擎同步mysql数据库

    尚未成功启动solr的,请参考我的另一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎启动eclipse启动) ...

  4. 10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.创建MySQL数据 create database solr; use solr; DROP TABLE ...

  5. 使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch

    本文介绍如何使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch. 1.go-mysql-elasticsearch简介 go-mysql-elasti ...

  6. Logstash同步mysql数据库信息到ES

    @font-face{ font-family:"Times New Roman"; } @font-face{ font-family:"宋体"; } @fo ...

  7. 使用logstash同步mysql数据库信息到ElasticSearch

    本文介绍如何使用logstash同步mysql数据库信息到ElasticSearch. 1.准备工作 1.1 安装JDK 网上文章比较多,可以参考:https://www.dalaoyang.cn/a ...

  8. 如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch

    在开发过程中,我们经常会遇到对业务数据进行模糊搜索的需求,例如电商网站对于商品的搜索,以及内容网站对于内容的关键字检索等等.对于这些高级的搜索功能,显然数据库的 Like 是不合适的,通常我们采用 E ...

  9. Elasticsearch学习(2) windows环境下Elasticsearch同步mysql数据库

    在上一章中,我们已经能够通过spring boot来使用Elasticsearch,但是由于我们习惯性的将数据写入mysql,所以为了解决这个问题,Elasticsearch为我们提供了一个插件log ...

随机推荐

  1. React文档(十六)refs和DOM

    Refs 提供了一种方式,用于访问在 render 方法中创建的 DOM 节点或 React 元素. 在标准的React数据流中,props是使得父组件和子组件之间交互的唯一方式.你通过props重新 ...

  2. 全面了解TCP/IP到HTTP

    一.OSI参考模型 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系结构标准定 ...

  3. CentOS 7上安装Pure-FTPd

    # 安装 yum install epel-release yum install pure-ftpd 位置文件位于/etc/pure-ftpd/pure-ftpd.conf # 修改配置文件 # 注 ...

  4. windows下《Go Web编程》之Go命令

    Go命令: go build 用于编译代码,默认会编译当前目录下的所以go文件.若只需编译某个文件,go build后加上文件名,如go build a.go. go build会忽略目录下以“_”或 ...

  5. Python之路-函数

    一.函数是什么: python中函数定义:函数是逻辑结构化和过程化的一种编程方法.定义函数的方法为: def function(): ""The function definiti ...

  6. Python-接口自动化(二)

    python基础知识(二) (二)常用控制流 1.控制语句 分支语句:起到一个分支分流的作用,类似马路上的红绿灯 循环语句:for while 可以使代码不断重复的执行 2.判断语句:关键字是if.. ...

  7. 解决RAID重启后自动更名为md127

    创建完raid后查看/etc/有没有生成mdadm.conf文件 如果没有执行命令:mdadm --detail --scan >> /etc/mdadm.conf 编辑配置文件/etc/ ...

  8. JAVA 根据设置的概率生成随机数

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...

  9. 新浪天气api

    package com.smartdot.dcu; /** * java获取新浪天气预报代码 */ import java.io.FileNotFoundException; import java. ...

  10. Vuejs的$watch实现原理

    大概原理如下面代码所示: class Vue { //Vue对象 constructor (options) { this.$options=options; let data = this._dat ...