使用logstash将mysql/sql server数据自动导入elasticsearch
当一个网站的信息不断增长的情况下,各种数据直接检索从数据库遇到瓶颈时,我们常常会使用elasticsearch来做全文索引,从而提高用户的检索体验。我下面使用当下流行的docker容器来实现这一切,当然用户可以直接在服务器上安装对应的软件包,无需使用docker方式,大同小异。 1. 下载需要用到的镜像$ docker pull elasticsearch$ docker pull...
当一个网站的信息不断增长的情况下,各种数据直接检索从数据库遇到瓶颈时,我们常常会使用elasticsearch来做全文索引,从而提高用户的检索体验。我下面使用当下流行的docker容器来实现这一切,当然用户可以直接在服务器上安装对应的软件包,无需使用docker方式,大同小异。
1. 下载需要用到的镜像
$ docker pull elasticsearch
$ docker pull logstash
2. 准备组件与配置文件
我们将数据库的插件和配置文件挂载进去,方便配置,下面我要用到的文件列出如下:
Sql Server的组件,logstash使用这个插件来访问Sql server
/docker/logstash/plugin/sqljdbc42.jar
配置文件
/docker/logstash/conf/logstash.conf
3. 启动容器
$ chcon -Rt svirt_sandbox_file_t /docker/elasticsearch/data/
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-v /docker/elasticsearch/data:/usr/share/elasticsearch/data -d elasticsearch
输入:http://192.168.236.132:9200/ 你安装机器的IP地址,这个地址是我本地地址,如果成功的话,将如下图所示
我们前面配置文件(logstash.conf)中指定的IP可以这样获取:
$ docker inspect --format='{{.NetworkSettings.IPAddress}}' elasticsearch
然后,我们再来启动我们的另外一个容器logstash,我把名字取为logstash,与镜像一直,这是可以的:
$ docker run --name logstash \
-v /docker/logstash/conf:/config-dir \
-v /docker/logstash/plugin:/plugin \
-d logstash -f /config-dir/logstash.conf
4. 查看数据
到第3部完成,数据就会马上启动导入,我们这时可以查看,输入:http://192.168.236.132:9200/_cat/indices?v
数据已经成功导入,后面发布的文章,也会被自动索引,sql_last_value会自动保存执行到的行,周期性的从Sql server对应的表取新的数据。mysql的使用方式一样,唯一不同的就是配置文件与数据库访问组件不同,我下面给出配置文件内容,mysql的数据库访问组件自己根据我下面的配置文件的名字去下载,官方网站有下载。
总结:我们可能还会遇到编辑的情况如何自动索引,这个可以自己做个策略,添加辅助的字段,在sql语句上做些修改可以做到,读者自己去尝试。
更多推荐
所有评论(0)