零基础快速入门SpringBoot2.0教程 (三)

一、SpringBoot Starter讲解

       简介:介绍什么是SpringBoot Starter和主要作用

 

       1、官网地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-starter

      

       2、starter主要简化依赖用的

              spring-boot-starter-web  ->里面包含多种依赖

 

       3、几个常用的starter

              spring-boot-starter-activemq

              spring-boot-starter-aop

              spring-boot-starter-data-redis

              spring-boot-starter-freemarker

              spring-boot-starter-thymeleaf

              spring-boot-starter-webflux

 

二、SpringBoot2.x常见模板引擎讲解和官方推荐使用

       简介:介绍常用的SpringBoot2.x模板引擎和官方推荐案例

 

              1、JSP(后端渲染,消耗性能)

                     Java Server Pages 动态网页技术,由应用服务器中的JSP引擎来编译和执行,再将生成的整个页面返回给客户端

                     可以写java代码

                     持表达式语言(el、jstl)

                     内建函数

                     JSP->Servlet(占用JVM内存)permSize

                     javaweb官方推荐

                     springboot不推荐 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-jsp-limitations

 

              2、Freemarker

                     FreeMarker Template Language(FTL)  文件一般保存为 xxx.ftl

                     严格依赖MVC模式,不依赖Servlet容器(不占用JVM内存)

                     内建函数

 

              3、Thymeleaf (主推)

                     轻量级的模板引擎(负责逻辑业务的不推荐,解析DOM或者XML会占用多的内存)

                     可以直接在浏览器中打开且正确显示模板页面

 

                     直接是html结尾,直接编辑

                     xdlcass.net/user/userinfo.html

                     社会工程学

                            伪装

 

三、SpringBoot整合模板引擎freemarker实战

       简介:SpringBoot2.x整合模板引擎freemarker实战

 

       1、Freemarker相关maven依赖

              <!-- 引入freemarker模板引擎的依赖 -->

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-freemarker</artifactId>

        </dependency>

 

       2、Freemarker基础配置

              # 是否开启thymeleaf缓存,本地为false,生产建议为true

              spring.freemarker.cache=false

 

              spring.freemarker.charset=UTF-8

              spring.freemarker.allow-request-override=false

              spring.freemarker.check-template-location=true

             

              #类型

              spring.freemarker.content-type=text/html

 

              spring.freemarker.expose-request-attributes=true

              spring.freemarker.expose-session-attributes=true

             

              #文件后缀

              spring.freemarker.suffix=.ftl

              #路径

              spring.freemarker.template-loader-path=classpath:/templates/

             

 

       3、建立文件夹

              1)src/main/resources/templates/fm/user/

              2)建立一个index.ftl

              3)user文件夹下面建立一个user.html

 

 

 

       4、简单测试代码编写和访问

 

 

四、SpringBoot2整合模板引擎thymeleaf实战

       讲解:SpringBoot2.x整合模板引擎thymeleaf实战

 

       官网地址:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

       1、thymeleaf相关maven依赖

                     <dependency>

                          <groupId>org.springframework.boot</groupId>

                          <artifactId>spring-boot-starter-thymeleaf</artifactId>

                     </dependency>

 

       2、thymeleaf基础配置

 

              #开发时关闭缓存,不然没法看到实时页面

              spring.thymeleaf.cache=false

              spring.thymeleaf.mode=HTML5

              #前缀

              spring.thymeleaf.prefix=classpath:/templates/

              #编码

              spring.thymeleaf.encoding=UTF-8

              #类型

              spring.thymeleaf.content-type=text/html

              #名称的后缀

              spring.thymeleaf.suffix=.html

 

       3、建立文件夹

              1)src/main/resources/templates/tl/

              2)建立一个index.html

 

       4、简单测试代码编写和访问

              注意:$表达式只能写在th标签内部

              快速入门:https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html

 

 

五、SpringBoot2.x持久化数据方式介绍

      

       简介:介绍近几年常用的访问数据库的方式和优缺点

 

              1、原始java访问数据库

                     开发流程麻烦

                     1、注册驱动/加载驱动

                            Class.forName("com.mysql.jdbc.Driver")

                     2、建立连接

                            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname","root","root");

                     3、创建Statement

 

                     4、执行SQL语句

 

                     5、处理结果集

 

                     6、关闭连接,释放资源

 

              2、apache dbutils框架

                     比上一步简单点

                     官网:https://commons.apache.org/proper/commons-dbutils/

              3、jpa框架

                     spring-data-jpa

                     jpa在复杂查询的时候性能不是很好

             

              4、Hiberante   解释:ORM:对象关系映射Object Relational Mapping

                     企业大都喜欢使用hibernate

             

              5、Mybatis框架  

                     互联网行业通常使用mybatis

                     不提供对象和关系模型的直接映射,半ORM

 

六、SpringBoot2.x整合Mybatis3.x注解实战

       简介:SpringBoot2.x整合Mybatis3.x注解配置实战

 

              1、使用starter, maven仓库地址:http://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

 

              2、加入依赖(可以用 http://start.spring.io/ 下载)

                                  

                     <!-- 引入starter-->

                                   <dependency>

                                       <groupId>org.mybatis.spring.boot</groupId>

                                       <artifactId>mybatis-spring-boot-starter</artifactId>

                                       <version>1.3.2</version>

                                       <scope>runtime</scope>                        

                                   </dependency>

                                 

                    <!-- MySQL的JDBC驱动包      -->  

                                  <dependency>

                                          <groupId>mysql</groupId>

                                          <artifactId>mysql-connector-java</artifactId>

                                          <scope>runtime</scope>

                                   </dependency>

                     <!-- 引入第三方数据源 -->             

                                   <dependency>

                                          <groupId>com.alibaba</groupId>

                                          <artifactId>druid</artifactId>

                                          <version>1.1.6</version>

                                   </dependency>

 

              3、加入配置文件

                     #mybatis.type-aliases-package=net.xdclass.base_project.domain

                     #可以自动识别

                     #spring.datasource.driver-class-name =com.mysql.jdbc.Driver

 

                     spring.datasource.url=jdbc:mysql://localhost:3306/movie?useUnicode=true&characterEncoding=utf-8

                     spring.datasource.username =root

                     spring.datasource.password =password

                     #如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource)

                     spring.datasource.type =com.alibaba.druid.pool.DruidDataSource

 

              加载配置,注入到sqlSessionFactory等都是springBoot帮我们完成

 

              4、启动类增加mapper扫描

                     @MapperScan("net.xdclass.base_project.mapper")

 

                      技巧:保存对象,获取数据库自增id

                      @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")

 

              4、开发mapper

                     参考语法 http://www.mybatis.org/mybatis-3/zh/java-api.html

 

              5、sql脚本

                     CREATE TABLE `user` (

                       `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

                       `name` varchar(128) DEFAULT NULL COMMENT '名称',

                       `phone` varchar(16) DEFAULT NULL COMMENT '用户手机号',

                       `create_time` datetime DEFAULT NULL COMMENT '创建时间',

                       `age` int(4) DEFAULT NULL COMMENT '年龄',

                       PRIMARY KEY (`id`)

                     ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

 

 

              相关资料:

              http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#Configuration

 

              https://github.com/mybatis/spring-boot-starter/tree/master/mybatis-spring-boot-samples

 

              整合问题集合:

                     https://my.oschina.net/hxflar1314520/blog/1800035

                     https://blog.csdn.net/tingxuetage/article/details/80179772

 

七、SpringBoot整合Mybatis实操和打印SQL语句

       讲解:SpringBoot2.x整合Mybatis3.x增删改查实操, 控制台打印sql语句

      

       1、控制台打印sql语句             

              #增加打印sql语句,一般用于本地开发测试

              mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 

       2、增加mapper代码          

           @Select("SELECT * FROM user")

           @Results({

               @Result(column = "create_time",property = "createTime")  //javaType = java.util.Date.class       

           })

           List<User> getAll();

        

           @Select("SELECT * FROM user WHERE id = #{id}")

           @Results({

                   @Result(column = "create_time",property = "createTime")

           })

           User findById(Long id);

 

           @Update("UPDATE user SET name=#{name} WHERE id =#{id}")

           void update(User user);

 

           @Delete("DELETE FROM user WHERE id =#{userId}")

           void delete(Long userId);

        

        3、增加API

 

              @GetMapping("find_all")

              public Object findAll(){

              return JsonData.buildSuccess(userMapper.getAll());

              }

             

              @GetMapping("find_by_Id")

              public Object findById(long id){

              return JsonData.buildSuccess(userMapper.findById(id));

              }

             

              @GetMapping("del_by_id")

              public Object delById(long id){

              userMapper.delete(id);

              return JsonData.buildSuccess();

              }

             

              @GetMapping("update")

              public Object update(String name,int id){

                     User user = new User();

                     user.setName(name);

                     user.setId(id);

                     userMapper.update(user);

                  return JsonData.buildSuccess();

              }

 

八、事务介绍和常见的隔离级别,传播行为

      

       简介:讲解什么是数据库事务,常见的隔离级别和传播行为

 

       1、介绍什么是事务,单机事务,分布式事务处理等

 

       2、讲解场景的隔离级别

              Serializable: 最严格,串行处理,消耗资源大

              Repeatable Read:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据

              Read Committed:大多数主流数据库的默认事务等级

              Read Uncommitted:保证了读取过程中不会读取到非法数据。

 

 

       3、讲解常见的传播行为

              PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务,最常见的选择。

 

              PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。

 

              PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。

 

              PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起, 两个事务之间没有关系,一个异常,一个提交,不会同时回滚

 

              PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

 

              PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常

 

九、SpringBoot整合mybatis之事务处理实战

       简介:SpringBoot整合Mybatis之事务处理实战

       1、service逻辑引入事务 @Transantional(propagation=Propagation.REQUIRED)

 

       2、service代码

              @Override

           @Transactional

              public int addAccount() {

                     User user = new User();

                     user.setAge(9);

                     user.setCreateTime(new Date());

                     user.setName("事务测试");

                     user.setPhone("000121212");

                    

                     userMapper.insert(user);

               int a = 1/0;

 

                     return user.getId();

              }

 

十、源码编译安装Redis4.x

       简介:使用源码安装Redis4.x和配置外网访问

 

       1、快速安装  https://redis.io/download#installation

                     wget http://download.redis.io/releases/redis-4.0.9.tar.gz

                     tar xzf redis-4.0.9.tar.gz

                     cd redis-4.0.9

                     make

 

                     启动服务端:src/redis-server

                     启动客户端:src/redis-cli

 

       2、默认是本地访问的,需要开放外网访问

              1)打开redis.conf文件在NETWORK部分修改

                 注释掉bind 127.0.0.1可以使所有的ip访问redis

                 修改 protected-mode,值改为no

 

 

十一、SpringBoot2.x整合redis实战讲解

 

       简介:使用springboot-starter整合reids实战

 

              1、官网:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-redis

                     集群文档:https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#cluster

 

              2、springboot整合redis相关依赖引入

                     <dependency>

                   <groupId>org.springframework.boot</groupId>

                   <artifactId>spring-boot-starter-data-redis</artifactId>

               </dependency>

          

           3、相关配置文件配置

                     #=========redis基础配置=========

                     spring.redis.database=0

                     spring.redis.host=127.0.0.1

                     spring.redis.port=6390

                     # 连接超时时间 单位 ms(毫秒)

                     spring.redis.timeout=3000

 

                     #=========redis线程池设置=========

                     # 连接池中的最大空闲连接,默认值也是8。

                     spring.redis.pool.max-idle=200

 

                     #连接池中的最小空闲连接,默认值也是0。

                     spring.redis.pool.min-idle=200

                    

                     # 如果赋值为-1,则表示不限制;pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。

                     spring.redis.pool.max-active=2000

 

                     # 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时

                     spring.redis.pool.max-wait=1000

 

 

 

              4、常见redistemplate种类讲解和缓存实操(使用自动注入)

 

                     1、注入模板

                     @Autowired

                     private StirngRedisTemplate strTplRedis

 

                     2、类型String,List,Hash,Set,ZSet

                     对应的方法分别是opsForValue()、opsForList()、opsForHash()、opsForSet()、opsForZSet()

 

十二、SpringBoot定时任务schedule讲解

       简介:讲解什么是定时任务和常见定时任务区别

 

              1、常见定时任务 Java自带的java.util.Timer类

                     timer:配置比较麻烦,时间延后问题

                     timertask:不推荐

 

              2、Quartz框架

                     配置更简单

                     xml或者注解

 

              3、SpringBoot使用注解方式开启定时任务

                     1)启动类里面 @EnableScheduling开启定时任务,自动扫描

                     2)定时任务业务类 加注解 @Component被容器扫描

                     3)定时执行的方法加上注解 @Scheduled(fixedRate=2000) 定期执行一次

 

十三、SpringBoot常用定时任务配置实战

       简介:SpringBoot常用定时任务表达式配置和在线生成器

 

              1、cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *") 表示每秒

                     1)crontab 工具  https://tool.lu/crontab/

              2、fixedRate: 定时多久执行一次(上一次开始执行时间点后xx秒再次执行;)

              3、fixedDelay: 上一次执行结束时间点后xx秒再次执行

              4、fixedDelayString:  字符串形式,可以通过配置文件指定

 

十四、SpringBoot2.x异步任务实战(核心知识)

       简介:讲解什么是异步任务,和使用SpringBoot2.x开发异步任务实战

              1、什么是异步任务和使用场景:适用于处理log、发送邮件、短信……等

                     下单接口->查库存 100

                                   余额校验 150

                                   风控用户100

                                   ....

 

 

              2、启动类里面使用@EnableAsync注解开启功能,自动扫描

             

              3、定义异步任务类并使用@Component标记组件被容器扫描,异步方法加上@Async

                     注意点:

                            1)要把异步任务封装到类里面,不能直接写到Controller

                            2)增加Future<String> 返回结果 AsyncResult<String>("task执行完成"); 

                            3)如果需要拿到结果 需要判断全部的 task.isDone()

              4、通过注入方式,注入到controller里面,如果测试前后区别则改为同步则把Async注释掉

 

十五、新日志框架LogBack介绍

       简介:日志介绍和新日志框架Logback讲解

 

       1.常用处理java的日志组件 slf4j,log4j,logback,common-logging 等

      

       2、logback介绍:基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用

              logback当前分成三个模块:logback-core,logback-classic和logback-access;

              logback-core是其它两个模块的基础模块

 

       3、Logback的核心对象:

              Logger:日志记录器

              Appender:指定日志输出的目的地,目的地可以是控制台,文件

              Layout:日志布局 格式化日志信息的输出

 

             

       4、日志级别:DEBUG < INFO < WARN < ERROR

 

              ===========log4j示例===========          

               ### 设置###

              log4j.rootLogger = debug,stdout,D,E

 

              ### 输出信息到控制抬 ###

              log4j.appender.stdout = org.apache.log4j.ConsoleAppender

              log4j.appender.stdout.Target = System.out

              log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

              log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

 

              ### 输出DEBUG 级别以上的日志到=D://logs/error.log ###

              log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

              log4j.appender.D.File = D://logs/log.log

              log4j.appender.D.Append = true

              log4j.appender.D.Threshold = DEBUG

              log4j.appender.D.layout = org.apache.log4j.PatternLayout

              log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

 

              ### 输出ERROR 级别以上的日志到=D://logs/error.log ###

              log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

              log4j.appender.E.File =E://logs/error.log

              log4j.appender.E.Append = true

              log4j.appender.E.Threshold = ERROR

              log4j.appender.E.layout = org.apache.log4j.PatternLayout

              log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

 

              ===========logback============

      

       4、Log4j日志转换为logback在线工具(支持log4j.properties转换为logback.xml,不支持 log4j.xml转换为logback.xml)

        https://logback.qos.ch/translator/

 

十六、SpringBoot2.x日志讲解和Logback配置实战

       简介:讲解SpringBoot2.x整合Logback配置实战

 

              1、官网介绍:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging

 

                 各个组件案例:https://logback.qos.ch/manual/index.html

             

              2、分析SpringBoot启动日志

                     1)默认情况下,Spring Boot将日志输出到控制台

 

              3、整合Logback实战

                     1)创建 日志文件logback-spring.xml,官方推荐 -spring.xml结尾

                            默认加载加载配置顺序 logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy

                    

                     注释:

                            <configuration> 子节点

                            <appender></appender>                                

                            <logger></logger>

                            <root></root>(要加在最后)

 

十七、搜索知识和搜索框架elasticsearch介绍

       简介:通过京东电商 介绍什么是搜索引擎,和开源搜索框架ElasticSearch6.x新特性介绍

 

              前言:介绍ES的主要特点和使用场景,新特性讲解

              mysql:like 模糊,性能问题,

 

              solr:针对企业,Lucene

              elasticsearch:针对数据量特别大,PB,TB

                纯java开发,springboot使用,5.6版本

                es升级4->5版本,改动大,但是5版本后,改动不大

 

elasticSearch主要特点

 

              1、特点:全文检索,结构化检索,数据统计、分析,接近实时处理,分布式搜索(可部署数百台服务器),处理PB级别的数据

                     搜索纠错,自动完成

              2、使用场景:日志搜索,数据聚合,数据监控,报表统计分析

             

              3、国内外使用者:维基百科,Stack Overflow,GitHub

 

       新特性讲解

      

              1、6.2.x版本基于Lucene 7.x,更快,性能进一步提升,对应的序列化组件,升级到Jackson 2.8

                     mysql:database   table   rocord

                     es   : index     type(只能存在一个)    document

 

              2、推荐使用5.0版本推出的Java REST/HTTP客户端,依赖少,比Transport使用更方便,在基准测试中,性能并不输于Transport客户端,

 

              在5.0到6.0版本中,每次有对应的API更新, 文档中也说明,推荐使用这种方式进行开发使用,所有可用节点间的负载均衡

              在节点故障和特定响应代码的情况下进行故障转移,失败的连接处罚(失败的节点是否重试取决于失败的连续次数;失败的失败次数越多,客户端在再次尝试同一节点之前等待的时间越长)

             

              3、(重要)不再支持一个索引库里面多个type,6.x版本已经禁止一个index里面多个type,所以一个index索引库只能存在1个type

 

              官方文档:

              1、6.0更新特性

               https://www.elastic.co/guide/en/elasticsearch/reference/6.0/release-notes-6.0.0.html#breaking-java-6.0.0

              2、6.1更新特性

              https://www.elastic.co/guide/en/elasticsearch/reference/6.1/release-notes-6.1.0.html

 

 

 

十八、快速部署ElastcSearch5.6.x

       简介:讲解为什么不用ES6.x版本,及本地快速安装ElasticSeach和场景问题处理

             

       配置JDK1.8

              使用wget 下载elasticsearch安装包

              wget  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.tar.gz

       解压

              tar -zxvf elasticsearch-5.6.8.tar.gz

       官网:https://www.elastic.co/products/elasticsearch

      

       外网访问配置:   

              config目录下面elasticsearch.yml

              修改为 network.host: 0.0.0.0

 

 

       配置es出现相关问题处理(阿里云、腾讯云,亚马逊云安装问题集合):

              1、问题一

                     Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)

                     #

                     # There is insufficient memory for the Java Runtime Environment to continue.

                     # Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.

                     # An error report file with more information is saved as:

                     # /usr/local/software/temp/elasticsearch-6.2.2/hs_err_pid1912.log

              解决:内存不够,购买阿里云的机器可以动态增加内存

 

              2、问题二

                     [root@iZwz95j86y235aroi85ht0Z bin]# ./elasticsearch

                     [2018-02-22T20:14:04,870][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]

                     org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

                     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.2.jar:6.2.2]

                     at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]

                     at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]

                     at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]

              解决:用非root用户

                     添加用户:useradd -m 用户名  然后设置密码  passwd 用户名

                    

 

              3、问题三

                     ./elasticsearch

                     Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/software/temp/elasticsearch-6.2.2/config/jvm.options

                 解决:权限不够 chmod 777 -R 当前es目录

 

              常见配置问题资料:https://www.jianshu.com/p/c5d6ec0f35e0

 

十九、ElasticSearch5.6测试数据准备

       简介: ElasticSearch5.6.x简单测试

              1、步骤 https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html

              2、使用POSTMAN 工具

 

              基础

                     查看集群状态:localhost:9200/_cat/health?v

                     查看索引列表:localhost:9200/_cat/indices?v

 

二十、SpringBoot2.x整合elasticsearch5.6.x

       简介:SpringBoot2.x整合elasticSearch5.6.8实战

 

              Spring Data Elasticsearch文档地址

              https://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/reference/html/

 

              版本说明:SpringBoot整合elasticsearch

                     https://github.com/spring-projects/spring-data-elasticsearch/wiki/Spring-Data-Elasticsearch---Spring-Boot---version-matrix

 

              1、添加maven依赖                                

                     <dependency> 

                  <groupId>org.springframework.boot</groupId> 

                  <artifactId>spring-boot-starter-data-elasticsearch</artifactId> 

              </dependency> 

 

              2、接口继承ElasticSearchRepository,里面有很多默认实现

                     注意点:

                           索引名称记得小写,类属性名称也要小写

                    新建实体对象article

                    加上类注解 @Document(indexName = "blog", type = "article")

 

 

             3、配置文件:

                    # ELASTICSEARCH (ElasticsearchProperties)

                     spring.data.elasticsearch.cluster-name=elasticsearch # Elasticsearch cluster name.

                     spring.data.elasticsearch.cluster-nodes=localhost:9300 # Comma-separated list of cluster node addresses.

                     spring.data.elasticsearch.repositories.enabled=true # Whether to enable Elasticsearch repositories.

 

              4、QueryBuilder使用

              https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.3/query-dsl-queries.html

             

              //单个匹配,搜索name为jack的文档 

              QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", "搜");

 

              4、查看es数据

 

                     查看索引信息:http://localhost:9200/_cat/indices?v

                     查看某个索引库结构:http://localhost:9200/blog

                     查看某个对象:http://localhost:9200/blog/article/1

 

 

教程会持续更新。。。。

更多学习资料可参考:https://xdclass.net/html/course_catalogue.html?video_id=4

https://ke.qq.com/course/299498

posted @ 2018-09-04 09:33  小D课堂  阅读(962)  评论(0编辑  收藏  举报