热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

macOS下使用elasticsearch+elasticsearchhead+logstash+ik分词器+mysql数据同步教程

使用教程使用中间件及软件版本序号中间件或软件版本1elasticsearch7.6.22logstash7.6.23mysql84JDK115mysql-connector-j

使用教程


使用中间件及软件版本


序号中间件或软件版本
1elasticsearch7.6.2
2logstash7.6.2
3mysql8+
4JDK11
5mysql-connector-java8.0.19

安装elasticsearch


  1. elasticsearch下载地址 elasticsearch为:https://www.elastic.co/cn/downloads/elasticsearch
  2. 下载后解压到指定文件夹
  3. 切换到config文件夹下,编辑elasticsearch.yml文件,让其支持外网IP及elasticsearch-head跨域访问,详细配置如下:

支持外网IP访问配置:(如果不需要,则不配置即可)

network.host: 0.0.0.0
http.port: 9200

支持elasticsearch-head跨域访问配置:

http.cors.enabled: true
http.cors.allow-origin: "*"

切换到bin文件下,使用:./elasticsearch直接启动elasticsearch


  1. 下载elasticsearch-head

git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install // 速度慢的可以安装cnpm来代替或者yarn也可以,建议是cnpm
npm run start

  1. 然后访问http://127.0.0.1:9100接口看到界面

直接使用提供的plugin安装elasticsearch-head会报错,下载后解压也会报错,原因是因为node和npm环境问题,需要配置的东西略多,故方式是直接从github上拉取源码,按照上面的步骤4走即可。(任何形式的解压elasticsearch-head到plugins或者modules文件夹下都会导致elasticsearch启动失败)

也可以将elasticsearch-head clone到elasticsearch根目录下面,然后npm install安装依赖,然后更改elasticsearch-head根目录下的Gruntfile.js的

connect: {server: {options: {port: 9100,base: '.',keepalive: true}}
}

connect: {server: {options: {port: 9100,hostname: '*',base: '.',keepalive: true}}
}

启动elasticsearch后再启动head即可。

到此,安装教程就已经基本完成


安装中文分词器


  1. 前往分词下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases 下载对应版本的分词器
  2. 在编辑elasticsearch下的plugins文件夹创建叫“ik”的文件夹,然后解压压缩包到ik文件夹下,重启elasticsearch即可

elasticsearch-head使用教程


  1. 打开在浏览器打开head后,查看elasticsearch集群连接是否健康,green或者yellow为正常
  2. 确保正常后,点击“索引”选项卡创建一个名为myword的索引
  3. “基本查询”使用补齐,处于待完善状态
  4. 点击“复合查询”使用,主要是为了测试中文分词器ik的使用,然后点击“查询”,在第一个输入框输入elasticsearch服务地址,默认为:http://localhost:9200/ ,第二个输入框为请求及操作方式,然后基于刚刚创建的索引myword进行分词分析,输入:

不使用ik分词器的情况:

POST myword/_analyze

第三个输入框输入的为json数据,测试数据如下:

{"text": "我是中国人"
}

点击“提交请求”,未启用ik分词时的效果如下:

{"tokens": [{"token": "我","start_offset": 0,"end_offset": 1,"type": "","position": 0},{"token": "是","start_offset": 1,"end_offset": 2,"type": "","position": 1},{"token": "中","start_offset": 2,"end_offset": 3,"type": "","position": 2},{"token": "国","start_offset": 3,"end_offset": 4,"type": "","position": 3},{"token": "人","start_offset": 4,"end_offset": 5,"type": "","position": 4}]
}

使用ik分词器的情况:
其他方式都一致,唯一区别就是请求的json数据换成如下的数据

{"analyzer": "ik_max_word","text": "我是中国人"
}

其中特意申明了分词器analyzer类型为:ik_max_word,意思为启用ik分词器,提交请求后结果如下:

{"tokens": [{"token": "我","start_offset": 0,"end_offset": 1,"type": "CN_CHAR","position": 0},{"token": "是","start_offset": 1,"end_offset": 2,"type": "CN_CHAR","position": 1},{"token": "中国人","start_offset": 2,"end_offset": 5,"type": "CN_WORD","position": 2},{"token": "中国","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 3},{"token": "国人","start_offset": 3,"end_offset": 5,"type": "CN_WORD","position": 4}]
}

很明显结果就跟使用默认的分词器有很大的区别,分词得更加的恰当。对于上面两个分词效果的解释:


  1. 如果未安装ik分词器,那么,你如果写 “analyzer”: “ik_max_word”,那么程序就会报错,因为你没有安装ik分词器
  2. 如果你安装了ik分词器之后,你不指定分词器,不加上 “analyzer”: “ik_max_word” 这句话,那么其分词效果跟你没有安装ik分词器是一致的,也是分词成每个汉字。

关于ik分词器的分词类型(可以根据需求进行选择):

ik_max_word:会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;

ik_smart:会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。请求json如下(post):

创建名为myword_test的索引;

POST myword_test/_analyze{"analyzer": "ik_smart","text": "我们都是很爱国的青年。"
}

结果如下:

{"tokens": [{"token": "我们","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "都是","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 1},{"token": "很","start_offset": 4,"end_offset": 5,"type": "CN_CHAR","position": 2},{"token": "爱国","start_offset": 5,"end_offset": 7,"type": "CN_WORD","position": 3},{"token": "的","start_offset": 7,"end_offset": 8,"type": "CN_CHAR","position": 4},{"token": "青年","start_offset": 8,"end_offset": 10,"type": "CN_WORD","position": 5}]
}

安装logstash使用及同步mysql数据到elasticsearch中


  1. logstash下载链接地址:https://www.elastic.co/cn/downloads/logstash

  2. 解压即可,网上说需要安装logstash-input-jdbc,但是在安装过程中,logstash提示已经提供了相关插件,不再需要安装了,直接使用默认的即可。

  3. 在logstash的根目录下创建一个叫“mysql”的文件夹,用来存放mysql驱动文件,驱动文件要求与mysql的版本要能匹配,不然会导致驱动不一致导致连接失败的情况

  4. 在config文件夹下创建jdbc.conf,配置内容如下:

# logstash同步mysql数据库到elasticsearch
input {stdin {}jdbc {type =>"search-education"# mysql 数据库链接jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/itaoke"# 用户名和密码jdbc_user => "root"jdbc_password => "jiangyun1992"jdbc_driver_library => "/Users/jiangyun/DevSoftware/logstash-7.6.2/mysql/mysql-connector-java-8.0.19.jar"jdbc_driver_class => "com.mysql.cj.jdbc.Driver"jdbc_paging_enabled => "true"jdbc_page_size => "50000"# 执行的sql 就是上一步创建的sql文件的绝对路径+文件名字,用于同步表的数据statement_filepath => "/Users/jiangyun/DevSoftware/logstash-7.6.2/mysql/search-education.sql"# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新schedule => "* * * * *"}jdbc {type =>"search-blog"# mysql 数据库链接jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/iwiteks_taoke_manager"# 用户名和密码jdbc_user => "root"jdbc_password => "jiangyun1992"jdbc_driver_library => "/Users/jiangyun/DevSoftware/logstash-7.6.2/mysql/mysql-connector-java-8.0.19.jar"jdbc_driver_class => "com.mysql.cj.jdbc.Driver"jdbc_paging_enabled => "true"jdbc_page_size => "50000"# 执行的sql 就是上一步创建的sql文件的绝对路径+文件名字statement_filepath => "/Users/jiangyun/DevSoftware/logstash-7.6.2/mysql/search-blog.sql"# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新schedule => "* * * * *"}
}filter {json {source => "message"remove_field => ["message"]}
}output {
if [type]=="search-education"{elasticsearch {# ES的IP地址及端口hosts => ["127.0.0.1:9200"]index => "search-education"#user => "elastic"#password => "123456"# 索引名称# 自增ID id必须是待查询的数据表的序列字段document_id => "%{id}"}}if [type]=="search-blog"{elasticsearch {hosts => ["127.0.0.1:9200"]index => "search-blog"document_id => "%{id}"}}stdout {# JSON格式输出codec => json_lines}
}

  1. 在刚刚创建的mysql文件夹下新建两个jdbc中使用到的sql脚本文件

search-education.sql:

SELECT * FROM organization

search-blog.sql:

SELECT * FROM basic_web_template

  1. 启动logstash命令与直接启动方式不一样,需要携带jdbc的配置文件中的配置到运行环境中,命令如下:

切换到logstash的bin目录下执行(建议直接写成shell脚本吧,每次都得携带参数执行命令,用起来麻烦)

./logstash -f ../config/jdbc.conf

启动一分钟后就能看到启动logstash的窗口打印同步数据日志了


  1. 到elasticsearch-head中点击“数据浏览”选项卡中点击指定的索引浏览即可,至于怎么使用head来进行简单或复合查询,后期再补全吧
    在这里插入图片描述

至此,基本完成了整个配置,数据同步为单张表,怎么做的更好就交给大家了,后面有空加上springboot集成es使用及追加kibana使用。


推荐阅读
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • hbase伪集群搭建
    hbase数据存储有三种跑法,跑在本地磁盘上、跑在伪分布式上、跑在完全分布式上--------额。。。官网的文档挺坑爹的,结合官网、百度、谷歌的各种 ... [详细]
  • Angular中navigate()和navigateByUrl()使用方法的区别是什么
    这篇文章主要介绍“Angular中navigate()和navigateByUrl()使用方法的区别是什么”,在日常操作中,相信很多人在Angular中navigate()和navigateByUrl ... [详细]
  • 优秀到卓越就差比他更快搭建elk集群架构上篇
    工作原理开源分布式搜索引擎,特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 如何在Vue项目中安装和使用VUX组件?
    vux2模板fork自webpack模板,基本和官方同步。1、默认为webpack2模板npminstallvue-cli-g如果还没安装vueinitairyla ... [详细]
author-avatar
书友66599567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有