Windows环境利用Elasticsearch+Kibana+Logstash搭建搜索引擎并实现实时同步MySQL数据,超详细步骤

背景:博主在做的一个项目是wamp环境下的电商平台,其搜索方式为sql查询,效率低下,准确率也非常感人,所以就尝试着在Windows环境下搭建一套搜索引擎,经过多方查阅,发现Elasticsearch(简称ES)是一个比较好的搜索引擎,也支持JDBC与MYSQL对接,并可以利用RESTful API CURL方式提供搜索服务,独立性强,扩展性好,于是就决定用它来做开发了。

Step 1:Windows下的JAVA环境配置

首先:下载JDK
然后,按照自己的系统环境安装JDK,网上很多教程,这里就略过了。顺便说一句Elasticsearch至少需要java8,官方建议高于1.8.0_131。这里也不建议安装java10,不然你有可能会遇到这样的bug。

Unrecognized VM option 'UseParNewGC' 
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

博主装的是jdk-8u181-windows-x64.exe
安装的时候还有两个坑需要数一下,第一,不要安装JRE,不然它会覆盖掉tools.jar。第二,jdk不要一路点下去,要提前建立个文件夹,要求路径里不能有中文,不能有空格,如果你默认安装的话,它会安装到C:\Program Files下,这里是有空格的,后面的Logstash是无法启动的。
不要安装jre

Step 2:下载安装Elasticsearch

下载Elasticsearch(选择WINDOWS sha版本)。这里提醒一下,ES至少需要2GB内存。
解压所有文件到一个文件夹下。
比如这里是博主的路径
然后cmd运行cd /d 你的安装路径\bin,比如我我的是cd /d C:\elasticsearch\bin
接着运行elasticsearch.bat即可。
运行之后可以看到这样的界面。
cmd内容
在浏览器输入localhost:9200,看到这样的显示,就是ES启动成功了。
启动成功
PS:在cmd界面Ctrl+C即可退出服务,另外,在生产环境下,建议用elasticsearch-service.bat,运行elasticsearch-service.bat install,将其安装成系统服务。
安装为服务

Step 3:安装Kibana管理调试工具

我们现在已经安装和运行了ES核心,那么怎么样去查看,配置,以及调试学习呢,这里就需要Kibana来帮忙了。这里说句题外话,有很多朋友应该看过ES的官方手册,里面提到的调试工具是Head或者Sense,我也安装过这两个,踩过坑,实际上用Kibana就够了,官方手册因为写了太久,所以这里会给很多新手带来困扰。
所以,我们直接下载Kibana(WINDOWS sha),然后解压。
然后用编辑器打开config/kibana.yml文件,搜索elasticsearch.url,找到这一句,把前面的#号去掉,当然,如果你在前两步不太安分,配置了其他的端口,或者是用多台机器配置的话,也可以在这里配置成自己 的URL。
去除#号
保存之后,打开cmd,输入cd -d C:\kibana\bin(这里是我的路径)。
再输入,kibana.bat,运行Kibana。出现这样的信息,就是成功了。
运行结果
然后在浏览器,输入localhost:5601,就可以看到Kibana的可视化界面了。具体怎么用我就不多说了,Kibana有很详细的手册可以查,我只说新手最关心的一点:Dev Tools界面就是可以学习,调试ES请求的地方,ES手册里的示例,就是在这里运行的。
调试工具
总结一下:很多人都是先学的数据库,所以我接下来的说法可能有点不对,但是目前可以这么去理解:ES相当于数据库服务,Kibana我们可以把它类比成数据库管理工具,比如SQLsever Manager Studio或者Navicat等等。
到这里为止,ES的应用,或者学习基本框架就搭建好了,现在你就可以很有效率的按照ES的官方文档一点一点看了。下面我们接着让它和传统数据库打通。

Step 4:安装部署Logstash

这一步,最好需要你通过之前搭建的学习框架,了解ES的基本架构,还有一些核心功能,比如这里要用到的输入输出插件等等。
首先,我们下载Logstash(ZIP sha),解压。
然后这里有用的是JDBC型输入,ES型输出,所有的细节都体现在一个配置文件里。在做这个配置文件之前,我们需要到网上下载一个Java的JDBC驱动,我这里连接的是Mysql数据库,所以我下载的是mysql-connector-java-5.1.44-bin.jar,这里没办法给链接,请自行下载。下载之后,放到C:\logstash\bin下。
然后,在C:\logstash\bin下,创建一个文本文件,写入以下代码。

input {
 stdin { }
    jdbc {
        jdbc_connection_string => "jdbc:mysql://localhost:3306/你的数据库名字"

        jdbc_user => "你的数据库用户名"

        jdbc_password => "你的数据库密码"

        jdbc_driver_library => "C:/logstash/bin/mysql-connector-java-5.1.44-bin.jar"

        jdbc_driver_class => "com.mysql.jdbc.Driver"

        jdbc_paging_enabled => "true"

        jdbc_page_size => "50000"
        statement => "SELECT id(主键),其他内容 FROM 你的表"
        schedule => "* * * * *"
    }
 }

 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
        hosts => "localhost:9200"
        index => "你要创建的索引名"
        document_type => "你要创建的索引类型"
        document_id => "%{id}"
    }
}

将这个txt文件改名以及后缀,mysqltoes.conf,然后像之前一样,cmd里cd进bin文件夹里。运行logstash -f mysqltoes.conf即可。
当在小黑屏里看到你数据库里的字段一一出现时,说明已经将数据导入到ES了。
数据导入
然后还可以在Kibana里查看一下。
查看创建的索引
PS:这里的同步数据库的配置,是会自动更新的,具体配置的含义, 可以去看一下Logstash的输入输出插件的文档,里面说的很清楚。
到此为止,在windows下的ES框架就搭建好了,然后具体怎么使用它,就看各自的项目要求了,下一篇博客,我会拿电商平台商品搜索举例如何使用ES的API

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章