ElasticSearch与Springboot结合入门学习

初识Elasticsearch

一、ElasticSearch与Mysql的对比:

  1. ES与Mysql的对应关系
    ElasticSearcg与Mysql的对比
  2. ES与Mysql的简单查询语句对比
    在这里插入图片描述

二、ElasticSearch安装和部署

  1. ElasticSearch的下载与安装
    进入ElasticSearch官网下载相关版本Zip包;本次学习使用6.3.2。下载完成后,进入解压文件夹的bin文件夹,打开elasticsearch.bat文件(Window环境)。随后打开浏览器输入"localhost:9200"即可。
    在这里插入图片描述
    如出现上图Json字符串则表示配置完成。
    温馨提示:如果打开elasticsearch.bat文件后发生,输入"localhost:9200"发生错误。可打开解压文件夹下的logs文件夹,打开elasticsearch.log文件查看报错信息。
    我在此次学习过程中,报了jdk方面的错误,通过重新配置jdk环境变量即可解决。如有人同样是与我犯相同的错误,可检查配置的jdk环境变量地址是否与实际jdk存在地址相符合。
  2. Kibana的下载与安装
    进入ElasticSearch官网 下载相关版本Zip包;本次学习使用6.3.2(与ES版本保持一致)。下载完成后,进入解压文件夹的bin文件夹,打开kibana.bat文件(Window环境)。随后打开浏览器输入"localhost:5601"即可。
    在这里插入图片描述
    如出现上图页面则表示配置完成。

ES与Mysql的全文检索

一、使用Mysql实现检索

  1. Mysql索引使用方式在这里插入图片描述

二、使用ES实现检索

  1. 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的运行与结果

  1. logstash的下载
    (1). 至官网下载,下载版本与ES版本相匹配同为6.3.2版本
  2. 运行logstash
    (1). 打开cmd输入logstash -f …/config/mysql.conf在这里插入图片描述
    出现此图表示运行成功。
  3. 查看相关结果
    (1). 打开kibana,输入GET /blog/_stats,查看blog是否同步成功
    (2). 输入POST /blog/_search{},查看blog详情信息
    在这里插入图片描述
  4. 可能出现的错误
    (1). 若logstash同步失败,可检查是否为mysql.conf配置文件相关数据库或者密码等配置错误。
    (2). 具体原因根据logstash报错信息为主,进行排错

分词器

一、ES的自带分词器与其特点

  1. standard : ES默认分词器,将单词转换为小写,去除停用词与符号,支持中文——单字切分
    在这里插入图片描述
  2. simple :通过非字母字符进行切分,统一化为小写,去除数字类型字符
    在这里插入图片描述
  3. whitespace :不支持中文,不转换为小写,只去除空格,
    在这里插入图片描述
  4. language :特定语言的分词器,不支持中文
    在这里插入图片描述
  5. ES默认分词器的分词效果
    在这里插入图片描述

二、IK中文分词器

  1. 由于ES默认分词器对于中文分词效果不理想,改用IK分词器(对中文分词效果优于默认分词器)
  2. IK分词器的下载——至github搜索IK分词器进行下载,下载版本与ES版本相匹配同为6.3.2版本
  3. ES配置IK分词器
    (1). 至ES的安装目录,打开plugins创建IK文件夹。将IK分词器压缩包解压内容复制至此。
    (2). 重新打开ES
  4. IK分词器的分词效果在这里插入图片描述

ES与Springboot结合使用

一、环境配置以及项目结构

  1. 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>
  1. 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
  1. 项目结构
    在这里插入图片描述

二、具体代码实现

  1. 原码链接

三、学习中所用下载zip

  1. 由于官网下载过慢,可从此处下载
  2. 密码为:1phb

学习资料来源

一、慕课网

  1. 本次ES学习于慕课网学习。

猜你喜欢

转载自blog.csdn.net/hyyyya/article/details/105186254
今日推荐