ElasticSearch与Springboot结合入门学习
初识Elasticsearch
一、ElasticSearch与Mysql的对比:
- ES与Mysql的对应关系
- ES与Mysql的简单查询语句对比
二、ElasticSearch安装和部署
- ElasticSearch的下载与安装
进入ElasticSearch官网下载相关版本Zip包;本次学习使用6.3.2。下载完成后,进入解压文件夹的bin文件夹,打开elasticsearch.bat文件(Window环境)。随后打开浏览器输入"localhost:9200"即可。
如出现上图Json字符串则表示配置完成。
温馨提示:如果打开elasticsearch.bat文件后发生,输入"localhost:9200"发生错误。可打开解压文件夹下的logs文件夹,打开elasticsearch.log文件查看报错信息。
我在此次学习过程中,报了jdk方面的错误,通过重新配置jdk环境变量即可解决。如有人同样是与我犯相同的错误,可检查配置的jdk环境变量地址是否与实际jdk存在地址相符合。 - Kibana的下载与安装
进入ElasticSearch官网 下载相关版本Zip包;本次学习使用6.3.2(与ES版本保持一致)。下载完成后,进入解压文件夹的bin文件夹,打开kibana.bat文件(Window环境)。随后打开浏览器输入"localhost:5601"即可。
如出现上图页面则表示配置完成。
ES与Mysql的全文检索
一、使用Mysql实现检索
- Mysql索引使用方式
二、使用ES实现检索
- ES索引使用方式
Mysql与ES数据同步
一、logstash的介绍
Logstash 是开源的服务器端数据处理管道,支持从不同来源采集数据,装换数据,并将数据发送到不同的存储库中。
Logstash 项目诞生于 2009 年 8 月 2 日。其作者是世界著名的运维工程师乔丹西塞(JordanSissel),乔丹西塞当时是著名虚拟主机托管商 DreamHost 的员工,还发布过非常棒的软件打包工具 fpm。
2013年,Logstash 被 Elasticsearch 公司收购。
二、logstash的配置环境
input {
jdbc {
jdbc_driver_library => "F:\Elasticsearch\logstash-6.3.2\logstash-6.3.2\mysql-connector-java-8.0.16.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 8.0以上版本:一定要把serverTimezone=UTC天加上
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
jdbc_user => "root"
jdbc_password => "root"
schedule => "* * * * *"
statement => "SELECT * FROM blog WHERE update_time > :sql_last_value and update_time < NOW()"
use_column_value => true
tracking_column_type => "timestamp"
tracking_column => "update_time"
last_run_metadata_path => "syncpoint_table"
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["127.0.0.1:9200"]
# 索引名称 可自定义
index => "blog"
# 需要关联的数据库中有有一个id字段,对应类型中的id
document_id => "%{id}"
document_type => "blog"
}
stdout {
# JSON格式输出
codec => json_lines
}
}
三、logstash的运行与结果
- logstash的下载
(1). 至官网下载,下载版本与ES版本相匹配同为6.3.2版本 - 运行logstash
(1). 打开cmd输入logstash -f …/config/mysql.conf
出现此图表示运行成功。 - 查看相关结果
(1). 打开kibana,输入GET /blog/_stats,查看blog是否同步成功
(2). 输入POST /blog/_search{},查看blog详情信息
- 可能出现的错误
(1). 若logstash同步失败,可检查是否为mysql.conf配置文件相关数据库或者密码等配置错误。
(2). 具体原因根据logstash报错信息为主,进行排错
分词器
一、ES的自带分词器与其特点
- standard : ES默认分词器,将单词转换为小写,去除停用词与符号,支持中文——单字切分
- simple :通过非字母字符进行切分,统一化为小写,去除数字类型字符
- whitespace :不支持中文,不转换为小写,只去除空格,
- language :特定语言的分词器,不支持中文
- ES默认分词器的分词效果
二、IK中文分词器
- 由于ES默认分词器对于中文分词效果不理想,改用IK分词器(对中文分词效果优于默认分词器)
- IK分词器的下载——至github搜索IK分词器进行下载,下载版本与ES版本相匹配同为6.3.2版本
- ES配置IK分词器
(1). 至ES的安装目录,打开plugins创建IK文件夹。将IK分词器压缩包解压内容复制至此。
(2). 重新打开ES - IK分词器的分词效果
ES与Springboot结合使用
一、环境配置以及项目结构
- pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>estest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>estest</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- es配置文件
(1). 注意事项:
spring.data.elasticsearch.cluster-name需得与本地es配置想匹配;可在浏览器输入localhost:9200进行查看。
#通用数据源配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/bolg?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
#Hikari数据源专用配置
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
#JPA相关配置
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
#es
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
spring.data.elasticsearch.cluster-name=elasticsearch
#mVc
spring.mvc.static-path-pattern=/**
spring.devtools.livereload.enabled=true
spring.devtools.restart.additional-paths=static/**
#日期格式化4
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
- 项目结构
二、具体代码实现
三、学习中所用下载zip
- 由于官网下载过慢,可从此处下载
- 密码为:1phb
学习资料来源
一、慕课网
- 本次ES学习于慕课网学习。