先解决一个问题,当ElasticSearch查询的结果过多时,如果在前端页面上如果直接点击后面的结果,会报Result window is too large问题,解决方案如下:
Elasticsearch在页面上设置max_result_window - CSDN博客
es的index.max_result_window只能修改一次? - Elastic中文社区
ES报错Result window is too large问题处理至于是不是只能修改一次还没有尝试过2333,反正我只改了一次,解决了问题
接下来解决mysql数据库与els在windows环境下同步的问题
首先我查了一下,有很多同步的插件,各有优劣,主要参考了如下的文章:
elasticsearch-jdbc实现MySQL同步到ElasticSearch深入详解 - 铭毅天下 - CSDN博客
利用logstash-input-jdbc实现ElasticSearch与mysql同步的教程_技术栈具体的优劣对比可以详细的去研究,但我比较了三种主流插件后决定用logstash-input-jdbc: ruby语言开发这一个,因为go-mysql-elasticsearch还不是很稳定,担心以后在开发中出现问题,elasticsearch-jdbc: java开发,去github上一看,发现支持的最新的版本才到2.3.4啊,而我用的els版本比较新,所以还是用logstash好了。
反正如果要用elasticsearch-jdbc-java的话,这边配置的时候还是要注意一下的

Elasticsearch JDBC的使用-MySQL 数据源导入和增量索引、更新
主要就是数据库地址+端口号+数据库名称,然后index对应库名字,type对应表名字
然后是logstash的安装,配置等,ruby自然要提前安装
使用Logstash同步mysql到Elasticsearch 6.0.1Elasticsearch系列(九)----使用Logstash-input-jdbc同步数据库中的数据到ES - fendo - CSDN博客
其中提到了一个叫sense的插件,其实kibana中其实已经集成了,sense就是可以比较方便的
"No valid url specified" when trying to install Kibana's Sense plugin
通过http请求来实现创建Index之类的操作,当然也可以直接代码去增加索引es.index(index='document', doc_type='document', body={})
还有一些比较好的资源:
使用Logstash-input-jdbc同步数据库中的数据(全量 和 增量)
logstash-input-jdbc实现mysql 与elasticsearch实时同步深入详解
Elasticsearch JDBC的使用-MySQL 数据源导入和增量索引、更新利用logstash的logstash-input-jdbc插件实现mysql增量导入ES_sh10034_新浪博客全量更新在这4个博客的第一个中已经写的很好了,我试验了,也能成功同步,但是肯定不能每次都全量更新,而是要进行增量更新,这里要注意要在数据库表结构中增加更新时间(update_time)这一个列,因为后续更新的时候要根据这个字段进行同步,配置文件的jdbc.sql可以这么写:
select
id as object_id,
listpage.index,
html as pro,
created_time,
update_time
from
listpage
where
update_time > :sql_last_value然后在数据库里写sql,主要是更新,插入的sql,因为logstash的删除实时同步不行,上面的链接文章里有写,可以去研究一下
update listpage set html = 'lisp' where html='elixir';
alter table listpage add column update_time datetime default null;
insert into listpage (id, listpage.index, html, created_time, update_time) VALUES (3328871520, 456, 'elixir', NOW(), NOW());这里要更新一下一个很蛋疼的问题,问题描述如下:
在windows server服务器上启动logstash时碰到了错误:找不到或无法加载主类
我一开始以为是java版本以及java home, path, classpath的设置问题,然后我重新装了jdk,这里先说明一下,不要用最新的jdk9, 版本过新并不支持,用jdk8就好,然后安装好完,配置好了以后发现还是报错,然后没办法,只能看一下logstash.bat文件里写了些什么,用echo %CLASSPATH%打印发现显示的是竟然是jdk9,什么鬼?我明明安装了jdk8啊,然后发现问题原来在path里面,oracle会自带jdk版本,当你把它写在java配置的前面时就会报错,然后我调整了一下顺序,成功识别了java8,但还没完,继续报错,还是找不到或无法加载主类,
使用 logstash + kafka + elasticsearch 实现日志监控
最后我在这篇文章里看到了kafka也有这样的问题,解决方法就是在CLASSPATH两边加双引号
代码如下:
%JAVA% %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.Logstash %*这个问题折腾了一天多的时间。。。真的要报警了。。。
好,基本上问题就解决了,接下来会写一下Elasticsearch与中文分词的教程,因为现在发现一个问题,搜索时els貌似是按字来搜索的,感觉搜索效果并不好。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3148785/ ,如需转载,请注明出处,否则将追究法律责任。