微服务理论基础知识点

文章目录

微服务

介绍

在这里插入图片描述

微服务技术栈

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnqWqhnP-1688347828514)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229131225155.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3QV8MHli-1688347828515)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229131553396.png)]

分布式架构

介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XRm1Ieso-1688347828515)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229132717709.png)]

分布式架构需考虑的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t9dj3PQY-1688347828516)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229133100435.png)]

微服务特点总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KeGt7VW-1688347828517)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229133657649.png)]

微服务技术对比

在这里插入图片描述

技术对比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awoKnF73-1688347828519)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229134524888.png)]

企业需求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcXPyZI1-1688347828520)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20221229134649894.png)]

SpringCloud

介绍

在这里插入图片描述

版本兼容

在这里插入图片描述

服务拆分与远程调用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfUgvjr7-1688347828522)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201201901094.png)]

微服务远程调用

okHttpApi也可以进行远程调用

RestTemplate:是Spring提供的用于访问Rest服务的客户端

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YEJozOEm-1688347828522)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201205231961.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JubBpci9-1688347828523)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201210828974.png)]

提供者与消费者

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzRx52T5-1688347828524)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201211233803.png)]

服务者与消费者的角色是相对的。一个服务可以同时是服务提供者和服务消费者。

Eureka注册中心

服务调用出现的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDGjNEBd-1688347828524)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201211905389.png)]

Eureka的作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxT3RK9A-1688347828525)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201212426704.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bk25nHqs-1688347828525)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201212652765.png)]

Eureka注册中心配置搭建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cp2xtZw9-1688348317842)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230201212939313.png)]

注册user-service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SCDkmUg-1688347828526)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204145320310.png)]

启动一个项目的多个实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOE253Ce-1688347828527)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204150431693.png)]

服务拉取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3LtyH4HN-1688347828527)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204151300739.png)]

总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8B5hYD3-1688347828528)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204151936626.png)]

负载均衡:

负载均衡流程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uH0AFOgL-1688347828528)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204152330985.png)]

负载均衡策略:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lY7RfB1N-1688347828528)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204155250286.png)]

自定义负载均衡策略:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5MYc6XI-1688347828529)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204160307439.png)]

第一种:是全局配置,orderservice这个消费者访问任何服务的时候均会按照配置的这个随机选择策略。

第二种:是局部配置,先指定服务名再配置用户希望的负载均衡策略。

饥饿加载:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eHNFj62V-1688347828529)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204161040797.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RPrcTj7e-1688347828529)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230204161206408.png)]

Nacos注册中心

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件 。相比Eureka功能更为丰富,在国内受欢迎程度较高。

Nacos下载安装与启动

下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.1

启动方式:

D:\nacos\bin>startup.cmd -m standalone

配置总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwdwNHof-1688347828530)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206171022421.png)]

SpringCloud-common定义了统一的接口规范,所以只需要修改依赖即可。

首先:还得在父工程pom文件中,引入:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Nacos服务注册发现客户端依赖:

<!-- nacos客户端依赖包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

Nacos服务分级存储模型:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKqtQ4c4-1688347828530)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206171833014.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFAL7W7v-1688347828530)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206172003167.png)]

分级模型总结:

注意:一种服务有多个集群时,先通过启动一个项目的多个实例,再分别通过修改yml文件配置并指定要启动的一个服务启动!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y3ZBqCEk-1688347828531)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206172948878.png)]

配置负载均衡规则:消费者优先选择本地集群的服务者。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fc5lJijB-1688347828531)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206174404073.png)]

Nacos负载均衡总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SefV722p-1688347828532)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206175519426.png)]

根据权重负载均衡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fyfaYKXE-1688347828532)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206175828756.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ux7ba0lQ-1688347828532)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206175916085.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9IAGYEY-1688347828533)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206180406574.png)]

作用:也可以用于服务器升级,将需要升级的服务器访问权重调小。

环境隔离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbdsUAyJ-1688347828533)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206180753544.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVNsSWgJ-1688347828533)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206181310626.png)]

Nacos注册中心原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DnZKsjZ6-1688347828534)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206181758001.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hw7KrHOS-1688347828534)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206181859947.png)]

Nacos对比Eureka总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVIgq61i-1688347828534)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230206182616089.png)]

Nacos配置管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r5qUwZfO-1688347828535)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222194725883.png)]

配置步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnQG9oVy-1688347828535)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222195700092.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-54U2cyqw-1688347828536)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222195713299.png)]

读取配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFrT4I5Q-1688347828536)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222200132082.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1NYIJOZB-1688347828537)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222203919094.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ziru2uvn-1688347828537)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222203948665.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G17uBwkU-1688347828537)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222204027781.png)]

配置热更新:

方式一:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWVH6j5g-1688347828538)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222204411230.png)]

方式二:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gju9RwwJ-1688347828538)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222205754222.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oc8k1zcz-1688347828538)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230222205853723.png)]

多环境配置共享:

开发、测试、生产环境相同的配置共享。

修改环境:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SRnL4yPu-1688347828538)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230227230731777.png)]
等价于上面配置

配置优先级:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TTQ2geqK-1688347828538)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230227231029507.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bt3duoxd-1688347828538)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230227231103170.png)]

nacos集群搭建:

Nacos的单例模式不推荐用在生产环境,所以需要对nacos服务做高可用,所以需要通过nacos集群来解决这个问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TuwDOKQG-1688347828539)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230227233131011.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XYGddiAY-1688347828539)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230227233052443.png)]

基于Feign的远程调用:

RestTemplate存在的问题:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fj28G41F-1688347828539)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230228233441485.png)]

Feign:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxk5XToj-1688347828540)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230228233611005.png)]

Feign使用步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Slk2tguO-1688347828540)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230228233713206.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mnPRuYQY-1688347828540)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230228233848085.png)]

自定义Feign的配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MwouUY0d-1688347828541)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301212638915.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbENqkFO-1688347828541)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301212747968.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fbz3NQ9H-1688347828542)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301213256467.png)]

@EnableFeignClients	注解在启动类上;
@FeignClient		注解在client的配置接口;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SrOwL5Sl-1688347828542)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301213858554.png)]

Feign的性能优化:

性能优化介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YjjihK84-1688347828542)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301220925796.png)]

性能优化操作步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OzBaIl9Y-1688347828543)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301221051363.png)]

总结:

在这里插入图片描述

Feign的最佳实践

方式一(继承):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bTBtqOo7-1688347828543)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301224335263.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9JTIFTr-1688347828544)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301224532109.png)]

方式二(抽取):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zaz31gzH-1688347828545)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301224940083.png)]

方式二的实现:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPvitDWM-1688347828545)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301225425261.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RgHoTNs-1688347828545)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301231540433.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J7x2leYj-1688347828546)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230301231548633.png)]

统一网关Gateway:

网关功能:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aAKcOav3-1688347828546)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302165321267.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n8jhnpPC-1688347828547)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302165520444.png)]

功能总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U397PyuF-1688347828547)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302165606281.png)]

网关搭建:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krawIlby-1688347828547)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302170341858.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BDVu9O9B-1688347828548)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302172305208.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ol7SX3tt-1688347828548)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302172512773.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VvSnNsam-1688347828548)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302172616996.png)]

路由断言工厂:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GSUmFAt-1688347828549)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302172906927.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDj18UR5-1688347828549)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302173604810.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Feq5nYNx-1688347828550)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302173801158.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u6uw2vgU-1688347828550)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230302173925781.png)]

路由的过滤器配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1k9PVakl-1688347828550)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303201017496.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FvdJFzT9-1688347828551)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303202027551.png)]

默认过滤器配置,会对所有进入网关的请求路由进行配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wt9fC3B-1688347828551)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303202448455.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMoYDoC0-1688347828552)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303202708948.png)]

全局过滤器GlobalFilter:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sK0esJJJ-1688347828552)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303203004131.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-moKxfe2N-1688347828553)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303203047856.png)]

全局过滤器配置步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-obgFaQcW-1688347828553)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303204451722.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ISaDdzrw-1688347828553)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303204540638.png)]

过滤器执行顺序:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucoLTrrs-1688347828553)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303205011757.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVloC2qB-1688347828554)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303205247432.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sQF0cLfv-1688347828554)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303205324038.png)]

网关跨域cors的配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFED1RpN-1688347828555)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303205620921.png)]

在gateway服务的yml进行配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YeRM6Lp6-1688347828556)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303205629417.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0I90f6u-1688347828556)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230303210817892.png)]

Docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlKQKx8G-1688347828557)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230307231312282.png)]

项目部署的问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qykGWOB-1688347828557)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230307231619616.png)]

工作原理:

类似Ubuntu和CentOS都是基于Linux内核,只是系统应用不同,提供的函数库有差异。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tT5tcf2V-1688347828558)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230307232315154.png)]

工作原理总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ieO4CLUL-1688347828558)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230307232529484.png)]

Docker对比虚拟机:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PglHyTmi-1688347828558)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230307233429333.png)]

Hypervisor可以模拟出计算机的硬件,cpu,内存等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H9h7t5QR-1688347828559)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230307233532401.png)]

镜像和容器:

镜像只能读,不能写。避免污染镜像。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9RiznKi1-1688347828559)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312163802694.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iTwU02iV-1688347828560)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312164022901.png)]

Docker整体架构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uodLLPue-1688347828560)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312164338624.png)]

Docker架构总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLF5rdQD-1688347828560)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312164500239.png)]

遇到的问题:

1.Failed to download metadata for repo ‘docker-ce-stable‘: Cannot download repomd.xml

解决方案:原因是华为服务器内核的问题,云服务器切换操作系统即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7rArdKaJ-1688347828560)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312182529358.png)]

2.启动docker容器报错No chain/target/match by that name.

解决方案:

systemctl restart  docker

3.关于SpringBootTest与RunWith注解

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

@RunWith(SpringRunner.class) //是一个JUnit注解,它是用来指定运行测试用例的运行器
@SpringBootTest //加载SpringBoot应用程序的上下文
public class SpringAmqpTest {
    @Resource
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testSendMessage2SimpleQueue(){
        String queueName="simple.queue";
        String message="Hello,SpringAmqp3!";
        rabbitTemplate.convertAndSend(queueName,message);
    }
}

Docker的安装:

见docker安装文件

Docker基本操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2958Df7i-1688347828561)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312191209863.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-85YmyWIf-1688347828561)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312191529668.png)]

Docker基本操作-镜像:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UgucnvuC-1688347828562)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312192009023.png)]

打包镜像到文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLZBBWfw-1688347828562)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312192808757.png)]
这里去掉image

加载镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d2zg7WKM-1688347828562)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312193237810.png)]

Docker基本操作-镜像命令总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pYoxLxT9-1688347828563)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312193349166.png)]

Docker基本操作-容器:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kvGFw50g-1688347828563)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312194631453.png)]

创建运行一个Nginx容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Js3b3rMe-1688347828564)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312195247655.png)]

docker logs -f mn  #查看docker中的mn容器的日志,不间断的方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtKAXfpJ-1688347828564)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230312200051434.png)]

修改容器内容:

shell命令是bash命令的一部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d2JlCcDv-1688347828564)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230320173602769.png)]

#	修改nginx容器中的静态文件
sed -i 's#Welcome to nginx#Nginx欢迎您!--by TSW#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

exit	#退出容器
docker ps		#显示运行中的容器的状态

docker ps -a	#显示所有容器的状态

docker rm mn	#删除非运行态的容器

docker rm -f mn	#强制删除运行的容器

docker stop 容器id # 停止指定容器的运行
总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6GNbxsG5-1688347828565)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230320174334899.png)]

redis容器操作:
docker exec -it mr bash		#进入redis(name-mr)容器内部
redis -cli				   #连接redis客户端

docker ps -a				#该命令将显示所有容器的列表,包括正在运行和已停止的容器,并显示相应的状态信息

数据卷:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7BqDK8K-1688347828565)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329193453599.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xO8xFhFz-1688347828565)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329193850183.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vupbvb8z-1688347828566)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329193954604.png)]

docker volume rm 数据卷名

数据卷总结1:

在这里插入图片描述

挂载数据卷:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0AeoIcBy-1688347828566)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329194854695.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3BkFiRRs-1688347828566)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329200648557.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TvV38Rrm-1688347828566)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329200706835.png)]

数据卷挂载案例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-amkRgONj-1688347828567)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329201113281.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5qEopUPH-1688347828567)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329205651905.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1CFQ1cVq-1688347828567)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230329205810587.png)]

远程mysql连接不上的问题,容器在创建的时候,密码输入格式不正确:

docker run \
--name mysql \
 -e MYSQL_ROOT_PASSWORD=123 \
 -p 3306:3306 \
 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
 -v /etc/mysql/data:/var/lib/mysql \
 -d mysql:5.7.25

自定义镜像:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WugF247g-1688347828568)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330162241298.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-icpaKhSJ-1688347828568)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330162600226.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gASmH4ZM-1688347828568)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330162642677.png)]

Dockerfile:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xq6DelnR-1688347828568)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330163015355.png)]

Dockerfile案例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVmSNqab-1688347828569)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330164648936.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0VZDlsaF-1688347828570)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330164851128.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MvqTHCj7-1688347828570)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330165008157.png)]

DockerCompose:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-noWf7ENg-1688347828570)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330214947312.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8tbVTbCe-1688347828570)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330214917920.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ONmJnAeW-1688347828570)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330220132927.png)]

微服务部署:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nyMbDNJS-1688347828570)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330224233630.png)]

Docker镜像仓库:

具体用法:见文档

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBDu4Xde-1688347828571)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330230013332.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4yH5Nyy-1688347828571)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230330231022090.png)]

服务异步通讯:RabbitMQ:

安装:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XYbse2T-1688347828571)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407210917317.png)]

RabbitMQ的部署与安装:详见MyCoding笔记文件夹中的RabbitMQ部署指南!

同步通讯的优缺点:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxoIHLWd-1688347828572)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331204252048.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yRs5G9MO-1688347828572)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331204717048.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDCiK7lR-1688347828572)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331204826634.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFIXuwte-1688347828573)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331204905068.png)]

异步通讯的优缺点:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmgPPgqM-1688347828573)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331205118301.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lxh457ku-1688347828573)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331205722766.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQZi7q73-1688347828574)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331210605525.png)]

RabbitMQ介绍和安装:

见安装文档

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qblc1UTE-1688347828574)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331212702134.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRUHSeHv-1688347828575)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331212802896.png)]

消息模型介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OzCUJIyv-1688347828575)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331213259243.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2GJPIFgu-1688347828576)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331213407124.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DpI2AOzn-1688347828576)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230331214951026.png)]

SpringAMQP:

简介:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8T6PGGSx-1688347828576)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407193936592.png)]

发送消息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TPD39sB3-1688347828576)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407194731329.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ujHgh2jt-1688347828577)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407194900817.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjEkZ5g8-1688347828577)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407200613993.png)]

接收消息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCm9Gy8q-1688347828578)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407201803530.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1B1LOVLi-1688347828578)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407202649393.png)]

WorkQueue工作队列:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ym2RYcP4-1688347828579)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407203049001.png)]

其他的和简单消息队列一致,差别不大

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7M6ZpCQ9-1688347828579)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407204921399.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0ok8XTc-1688347828580)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407205035817.png)]

发布订阅模型:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSnnHh7A-1688347828580)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230407205516261.png)]

Fanout Exchange:

简介:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ORbyz3l9-1688347828580)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408194929659.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsmqVW3K-1688347828581)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408195052249.png)]

操作步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSaNpQ4E-1688347828581)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408195202567.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wEZS22Bt-1688347828582)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408201608858.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4BnnqGB-1688347828582)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408201634819.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZJjdf6E0-1688347828582)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408201648042.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E6pxRUgc-1688347828583)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408201835724.png)]

Direct Exchange:

介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oeBbYSfF-1688347828583)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408204106976.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2Hy5F2w-1688347828584)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408204334643.png)]

操作步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGniPUzr-1688347828584)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408205827663.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTLEx9tb-1688347828585)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408205928065.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7yRNj4PU-1688347828585)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408210035826.png)]

Topic Exchange:

介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebKscJlj-1688347828585)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230408210431972.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93MiUWGT-1688347828585)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409003102383.png)]

操作步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R36tY5vj-1688347828586)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409003145947.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUv7l4Ka-1688347828586)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409005148333.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CLfLxLRI-1688347828587)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409005231846.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a3xlgCpl-1688347828587)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409005045635.png)]

消息转换器:

发送消息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpkcvz4t-1688347828587)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409010944090.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBt88AaB-1688347828587)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409011035265.png)]

MessageConverter在publisher中的启动类上声明!!!

发送消息,把对象序列化成字节!

接收消息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWJLM4rf-1688347828588)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409011635603.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NkKqyR0W-1688347828589)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230409011921844.png)]

ElasticSearch:

简介:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9CHNxD39-1688347828589)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230415222519694.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxXz5c3a-1688347828590)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230415222648448.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6HGQ78za-1688347828590)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230415222951693.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8StTPoJ-1688347828591)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230415223519933.png)]

倒排索引:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmmRkjrp-1688347828591)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423193912772.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pmavjon-1688347828592)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423194849279.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ylRvkvTp-1688347828593)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423195011301.png)]

文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSf6xcNA-1688347828594)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423195133971.png)]

索引:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WX1S51p6-1688347828594)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423195335906.png)]

ES对比Mysql:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AwoJwKXQ-1688347828594)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423195706659.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VbjsCW4O-1688347828595)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230423195925018.png)]

ES的安装:

详见MyCoding笔记文件夹中的ES安装指南!

Kibana的安装:

详见MyCoding笔记文件夹中的ES安装指南!

分词器:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjXVQ4go-1688347828596)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425214104529.png)]
在这里插入图片描述在这里插入图片描述

IK分词器的拓展和停用词典:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVPloxrs-1688347828597)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425220740599.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b10Be7g2-1688347828598)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425220817932.png)]

其他的扩展词典,停用词等操作见参考资料

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bj4ForvP-1688347828599)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425222316140.png)]

索引库操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nm5GEzeb-1688347828600)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425223701782.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3QVfEdyB-1688347828600)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425223816782.png)]

创建索引库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qev9mdKZ-1688347828601)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425224332740.png)]

操作索引库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wg2k4CD-1688347828601)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425225350192.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J2ziNbvq-1688347828602)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425225534306.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fiYE80PH-1688347828602)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425230140241.png)]

文档操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qt258v1P-1688347828603)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425230748847.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d46BGZfQ-1688347828608)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425231042648.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GnJobATu-1688347828608)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425231820670.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ag3vvyw-1688347828608)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230425232312113.png)]

RestClient基本用法:

RestClient操作索引库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNtqNlH7-1688347828609)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426165429141.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cw1u1aj4-1688347828609)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426165615300.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z08IIUwo-1688347828609)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426170503804.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDkWzZKa-1688347828609)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426172545538.png)]

注意:mapping的id只能为字符串类型,不能为integer,long。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DEJXq2Wo-1688347828610)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426174652701.png)]

注意:步骤三里面的第二步需要强制指定ES的版本

RestClient创建索引库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQBDwyjS-1688347828611)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426180703680.png)]

RestClient删除索引库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TEliFpqM-1688347828611)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426181059292.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b775DPjB-1688347828611)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426181951279.png)]

RestClient操作文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e0w80joD-1688347828611)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426184513675.png)]

客户端初始化:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7O8UL2mH-1688347828611)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426184540172.png)]

新增文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRccAMkr-1688347828611)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426184740375.png)]

批量新增文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePAJElcU-1688347828612)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426230959891.png)]

查询文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5OBQtNvD-1688347828612)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426222523985.png)]

修改文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SXlmwUgx-1688347828612)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426224431547.png)]

删除文档:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WIzZS7rG-1688347828613)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426224903730.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ApYMuAIh-1688347828613)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230426225020394.png
)]

DSL查询语法:

查询分类和基本语法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4y24UJi-1688347828614)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503203624668.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mLoCFLRR-1688347828614)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503204604293.png)]

全文检索查询:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUbyM3aJ-1688347828615)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503211305562.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8NDOa8O-1688347828615)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503211547992.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YsmjVHcI-1688347828615)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503211239054.png)]

上面两种查询功能和结果一样。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WX5BBWA2-1688347828616)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503211404420.png)]

精确查询:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qOPn9m83-1688347828616)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503212839623.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-86uHLRQA-1688347828616)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230503212909741.png)]

地理查询:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiqC7Voe-1688347828617)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506202703643.png)]

第一种:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9X3g1INX-1688347828617)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506203041626.png)]

第二种:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gw6So7F1-1688347828618)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506203213579.png)]

复合查询

介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HoXekGbs-1688347828619)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506204056105.png)]

相关性得分:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ARUnjZt-1688347828619)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506204644115.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zIK2kSeh-1688347828619)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506204654288.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlkRHlhe-1688347828619)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506204722540.png)]

复合查询—Function score Query:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aJxU9ovJ-1688347828620)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506205536197.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSs7vIoq-1688347828620)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506205810635.png)]


# function score 查询
GET /hotel/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "all": "外滩"
        }
      },
      "functions": [
        {
          "filter": {
            "term": {
              "brand": "如家"
            }
          },
          "weight": 10
        }
      ],
      "boost_mode": "sum"
    }
  }
}

term查询是精确查询。不是模糊查询(match)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存失败,源站可能有防盗链机制,建议将图片保存下来直接上传下上传(iObuEexXHqg2-1647828621)(C:\Users\28835817\AppData\Roaming\Typora\typora-user-images\imag4540506210510665.png02 3)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506210510665.png)]

复合查询—Boolean Query:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaCR3hm0-1688347828621)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506212121212.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kD24WI6X-1688347828622)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506212321732.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGfrii1U-1688347828622)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230506212653351.png)]

搜索结果处理-排序:

介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8zDfGrN-1688347828623)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230512233454751.png)]

案例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XvlrgMjB-1688347828623)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230512233555311.png)]

DSL语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DS9GI23Z-1688347828624)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230512235210180.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sQsQrM2-1688347828624)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230512234135755.png)]

DSL语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lkNKP7Dw-1688347828624)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230512235245326.png)]

注意:如果对结果进行排序处理,则不会再进行相关性得分的计算

搜索结果处理-分页:

介绍与应用:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOujTOx3-1688347828625)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513000534705.png)]

深度分页问题:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8XC7VZSL-1688347828625)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513001237690.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wM8lpVW8-1688347828626)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513001212051.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6F6vIBD0-1688347828626)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513001340541.png)]

搜索结果处理-高亮:

简介

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOtJezYN-1688347828626)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513002056203.png)]

DSL语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MAGi1a5-1688347828626)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513002718120.png)]

搜索结果处理-总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajObSAmt-1688347828627)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513003029276.png)]

RestClient查询文档:

入门介绍:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhWt9iwg-1688347828627)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513140957860.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7xcJKr0-1688347828628)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513142451753.png)]

注意点一:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yuaKE45Q-1688347828628)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513142537220.png)]

注意点二:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gUDZugSf-1688347828629)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513142556502.png)]

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a57lejO1-1688347828629)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513142659091.png)]

RestClient查询-match、term、range、bool查询:

Ctrl+Alt+M抽取代码,可提取出来当作一个方法

    private void handleResponse(SearchResponse response) {
        //        4.解析响应
        SearchHits searchHits = response.getHits();
//        4.1查询的总条数
        long value = searchHits.getTotalHits().value;
        System.out.println("总条数: "+value);
//        4.2查询的结果数组
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit : hits) {
//            4.3得到source
            String json = hit.getSourceAsString();
//            反序列化为对象
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            System.out.println(hotelDoc);
        }
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ys4lF18r-1688347828629)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513144010682.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a9BT0RwA-1688347828629)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513144204842.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ljwA2MMt-1688347828630)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513144328148.png)]

java代码

    /**
     * 复合查询:bool子查询
     * @throws IOException
     */
    @Test
    void testBoolMatch() throws IOException {
//        1.准备request
        SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
//        2.1准备BooleanQuery
        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
//        2.2添加term
        boolQueryBuilder.must(QueryBuilders.termQuery("city","上海"));
//        2.3添加range
        boolQueryBuilder.filter(QueryBuilders.rangeQuery("price").lte(250));
        request.source().query(boolQueryBuilder);
//        3.发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        System.out.println(response);
        handleResponse(response);
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nioLtH4-1688347828630)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513145340037.png)]

RestClient查询-排序和分页:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjfcvuGN-1688347828630)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513150107886.png)]

注意链式编程!

RestClient查询-高亮:

注意:高亮,必须针对带关键字的查询,不能用matchAll查询

高亮请求:

在这里插入图片描述

高亮结果解析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Z3xhDWs-1688347828631)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513152302790.png)]

java代码:

 /**
     * 高亮
     * @throws IOException
     */
    @Test
    void testHighlight() throws IOException {
//        1.准备request
        SearchRequest request = new SearchRequest("hotel");
//      全部查询
        request.source().query(QueryBuilders.matchQuery("all","如家"));
//        高亮
        request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));
//        3.发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//        System.out.println(response);
        //        4.解析响应
        SearchHits searchHits = response.getHits();
//        4.1查询的总条数
        long value = searchHits.getTotalHits().value;
        System.out.println("总条数: "+value);
//        4.2查询的结果数组
        SearchHit[] hits = searchHits.getHits();
        for (SearchHit hit : hits) {
//            4.3得到source
            String json = hit.getSourceAsString();
//            反序列化为对象
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
//            获取高亮结果
            Map<String, HighlightField> highlightFields = hit.getHighlightFields();
//            根据字段名获取高亮结果
            HighlightField highlightField = highlightFields.get("name");
            if(highlightField!=null){
                String name = highlightField.getFragments()[0].string();
                hotelDoc.setName(name);
            }
            System.out.println(hotelDoc);
        }
    }

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5KtzFoc-1688347828631)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513153347047.png)]

旅游项目案例:

注意:SpringBoot项目启动会自动访问resource文件夹下的static下的index.html

搜索和分页:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5oNqKSL2-1688347828632)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513181942905.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSaVVwcW-1688347828632)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513182219326.png)]

快捷键:Ctrl+Alt+T执行surround with

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19GYlG2s-1688347828632)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230513185915801.png)]

主要代码java:

@MapperScan("cn.itcast.hotel.mapper")
@SpringBootApplication
public class HotelDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(HotelDemoApplication.class, args);

    }
    /**
     * 将RestHighLevelClient注册到bean
     * @return
     */
    @Bean
    public RestHighLevelClient client(){
        return new RestHighLevelClient(RestClient.builder(HttpHost.create(
                "http://123.60.61.97:9200")
        ));
    }
}

@RestController
@RequestMapping("/hotel")
public class HotelController {
    @Resource
    private IHotelService hotelService;
    @PostMapping("/list")
    public PageResult search(@RequestBody RequestParams requestParams){
        return hotelService.search(requestParams);
    }
}
package cn.itcast.hotel.service.impl;

import cn.itcast.hotel.mapper.HotelMapper;
import cn.itcast.hotel.pojo.Hotel;
import cn.itcast.hotel.pojo.HotelDoc;
import cn.itcast.hotel.pojo.PageResult;
import cn.itcast.hotel.pojo.RequestParams;
import cn.itcast.hotel.service.IHotelService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Service
public class HotelService extends ServiceImpl<HotelMapper, Hotel> implements IHotelService {
    @Resource
    private RestHighLevelClient client;

    @Override
    public PageResult search(RequestParams requestParams)  {
        SearchResponse response = null;
        try {
//        1.准备request
            SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
//        2.1关键字全文搜索

//        若搜索为空,则执行全文查询
            String key = requestParams.getKey();
            if (key == null || key.equals("")) {
                request.source().query(QueryBuilders.matchAllQuery());
            } else {
                request.source().query(QueryBuilders.matchQuery("all", key));
            }
//        2.2分页
            request.source().from((requestParams.getPage() - 1) * requestParams.getSize()).size(requestParams.getSize());
//        3.发送请求
            response = client.search(request, RequestOptions.DEFAULT);
//            4.解析响应,返回结果
            return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
//        System.out.println(response);

    }

    private PageResult handleResponse(SearchResponse response) {
        //        4.解析响应
        SearchHits searchHits = response.getHits();
//        4.1查询的总条数
        long value = searchHits.getTotalHits().value;
        System.out.println("总条数: " + value);
//        4.2查询的结果数组
        SearchHit[] hits = searchHits.getHits();
        List<HotelDoc> hotelDocs = new ArrayList<>();
        for (SearchHit hit : hits) {
//            4.3得到source
            String json = hit.getSourceAsString();
//            反序列化为对象
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            hotelDocs.add(hotelDoc);
//            System.out.println(hotelDoc);
        }
//        4.4封装返回
        return new PageResult(value,hotelDocs);
    }
}

条件过滤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3EuMdSL-1688347828633)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230514200309650.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmmKzvo7-1688347828633)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230514215252386.png)]

java代码:

此处:Ctrl+Alt+M抽取了代码块作buildBasicQuery方法

    public PageResult search(RequestParams requestParams)  {
        SearchResponse response = null;
        try {
//        1.准备request
            SearchRequest request = new SearchRequest("hotel");
//        2.准备DSL
//        2.1关键字全文搜索
//        构建BooleanQuery
            buildBasicQuery(requestParams, request);

//        2.2分页
            request.source().from((requestParams.getPage() - 1) * requestParams.getSize()).size(requestParams.getSize());
//        3.发送请求
            response = client.search(request, RequestOptions.DEFAULT);
//            4.解析响应,返回结果
            return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
//        System.out.println(response);

    }

    private void buildBasicQuery(RequestParams requestParams, SearchRequest request) {
        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
        String key = requestParams.getKey();
//            关键字搜索
        //        若搜索为空,则执行全文查询
        if (key == null || key.equals("")) {
            boolQueryBuilder.must(QueryBuilders.matchAllQuery());
        } else {
            boolQueryBuilder.must(QueryBuilders.matchQuery("all", key));
        }
//         条件过滤:城市条件
        if(requestParams.getCity()!=null&&!requestParams.getCity().equals("")){
//                filter不参与算分
            boolQueryBuilder.filter(QueryBuilders.termQuery("city", requestParams.getCity()));
        }
//          条件过滤:品牌条件
        if(requestParams.getBrand()!=null&&!requestParams.getBrand().equals("")){
//                filter不参与算分
            boolQueryBuilder.filter(QueryBuilders.termQuery("brand", requestParams.getBrand()));
        }
//          条件过滤:星级条件
        if(requestParams.getStarName()!=null&&!requestParams.getStarName().equals("")){
//                filter不参与算分
            boolQueryBuilder.filter(QueryBuilders.termQuery("starName", requestParams.getStarName()));
        }
//          条件过滤:价格条件
        if(requestParams.getMinPrice()!=null&& requestParams.getMaxPrice()!=null){
//                filter不参与算分
            boolQueryBuilder.filter(QueryBuilders.rangeQuery("price")
                    .gte(requestParams.getMinPrice())
                    .lte(requestParams.getMaxPrice()));
        }
        request.source().query(boolQueryBuilder);
    }

我附近的酒店:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVuikjvM-1688347828634)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230514215942164.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NJxx7Qx3-1688347828635)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230514220816540.png)]

java代码:

   2.3 添加排序
            String location = requestParams.getLocation();
            if(location!=null&&!location.equals("")){
                request.source().sort(SortBuilders
                        .geoDistanceSort("location",new GeoPoint(location))
                        .order(SortOrder.ASC)
                        .unit(DistanceUnit.KILOMETERS));
            }

//            解析附近酒店距离值  这块代码在封装的解析响应那块
            Object[] sortValues = hit.getSortValues();
            if(sortValues.length>0){
                Object sortValue = sortValues[0];
                hotelDoc.setDistance(sortValue);
            }

广告置顶:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j8jQYgNi-1688347828635)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230514225011435.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FAVqW0Mv-1688347828635)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230514223604556.png)]

filter:必须满足条件的文档才参与算分

java代码:

//        2.算分控制
        FunctionScoreQueryBuilder functionScoreQuery = QueryBuilders.functionScoreQuery(
//                原始查询
                boolQueryBuilder
//                function score的数组
                , new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{
//                        其中的一个 function score元素
                        new FunctionScoreQueryBuilder.FilterFunctionBuilder(
//                        过滤条件
                                QueryBuilders.termQuery("isAD", true),
//                        算分函数
//
                                ScoreFunctionBuilders.weightFactorFunction(10)
                        )
                });
        request.source().query(functionScoreQuery);

数据聚合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JuDpHl5u-1688347828635)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230525103951564.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uMiTdDCU-1688347828635)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230525104046224.png)]

DSL实现bucket聚合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TvwMsEnm-1688347828636)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526170047174.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0ChXYZW-1688347828636)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526171554013.png)]

DSL语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7UdN20mV-1688347828636)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526171116582.png)]

返回结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDyZoP9K-1688347828637)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526171701563.png)]

DSL实现Metrics聚合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4bRR6ezN-1688347828637)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526173417985.png)]

DSL语句:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vEQcFiFj-1688347828638)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526173440926.png)]

返回结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ipcLGLH9-1688347828638)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526173526993.png)]

RestClient实现聚合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W70B4AOX-1688347828639)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526175251729.png)]

java代码:

请求响应+结果解析,请求三要素:类型,名称,字段

@Test
    void Aggregation() throws IOException {
    //    1.准备request
        SearchRequest request = new SearchRequest("hotel");
    //    2.准备dsl
    //    2.1设置size
        request.source().size(0);
    //    2.2聚合
        request.source().aggregation(AggregationBuilders
                .terms("brandAgg")
                .field("brand")
                .size(10)
        );
    //    3.发出请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //    4.解析结果
        Aggregations aggregations = response.getAggregations();
        //4.根据聚合名称获取聚合结果
        Terms brandTerms = aggregations.get("brandAgg");
        //4.2获取buckets
        List<? extends Terms.Bucket> buckets = brandTerms.getBuckets();
        //4.3遍历
        for (Terms.Bucket bucket : buckets) {
            //4.4获取key
            System.out.println(bucket.getKey());
        }
        //System.out.println(response);
    }

多条件聚合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6vJ4FnAE-1688347828639)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526183049604.png)]

java代码:

surround with快捷键:Ctrl+Alt+T

/**
     *多条件聚合:品牌,城市,星级
     * @return
     */
    @Override
    public Map<String, List<String>> filters()  {

        try {
            //    1.准备request
            SearchRequest request = new SearchRequest("hotel");
            //    2.准备dsl
            //    2.1设置size
            request.source().size(0);
            //    2.2聚合
            buildAggregation(request);
            //    3.发出请求
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            //    4.解析结果
            //    4.1根据聚合名称获取结果
            Map<String, List<String>> result = new HashMap<>();
            Aggregations aggregations = response.getAggregations();
            List<String> brandList = getAggByName(aggregations,"brandAgg");
            List<String> cityList = getAggByName(aggregations,"cityAgg");
            List<String> starList = getAggByName(aggregations,"starAgg");
            //4.4放入map
            result.put("品牌",brandList);
            result.put("城市",cityList);
            result.put("星级",starList);
            return result;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private List<String> getAggByName(Aggregations aggregations,String aggName) {
        //4.1根据聚合名称获取聚合结果
        Terms brandTerms = aggregations.get(aggName);
        //4.2获取buckets
        List<? extends Terms.Bucket> buckets = brandTerms.getBuckets();
        //4.3遍历
        List<String> brandList = new ArrayList<>();
        for (Terms.Bucket bucket : buckets) {
            //4.4获取key
            //System.out.println(bucket.getKey());
            brandList.add(bucket.getKeyAsString());
        }
        return brandList;
    }

    private void buildAggregation(SearchRequest request) {
        request.source().aggregation(AggregationBuilders
                .terms("brandAgg")
                .field("brand")
                .size(100)
        );
        request.source().aggregation(AggregationBuilders
                .terms("cityAgg")
                .field("city")
                .size(100)
        );
        request.source().aggregation(AggregationBuilders
                .terms("starAgg")
                .field("starName")
                .size(100)
        );
    }

带过滤条件的聚合:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vv1NE62-1688347828640)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526183850565.png)]

java代码:

 @PostMapping("/filters")
    public Map<String, List<String>> getFilters(@RequestBody RequestParams requestParams){
        return hotelService.filters(requestParams);
    }


案例截图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsKWon5g-1688347828640)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230526184956236.png)]

自动补全:

简介及用法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HLfajvzK-1688347828641)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607223858371.png)]

es的plugin目录地址:/var/lib/docker/volumes/es-plugins/_data

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efLPWMJJ-1688347828642)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607225335631.png)]

注意:pinyin分词器得在创建索引库的时候,在setting下面配置好

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VtMMoGvD-1688347828642)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607230422532.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCMU4N0Y-1688347828642)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607230750928.png)]

若用户搜索关键词是中文文字,则不应该使用拼音分词器

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-grZG8KUN-1688347828642)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607231216551.png)]

DSL实现自动补全:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3jsuGqqV-1688347828643)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607231532747.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bhzHt1qJ-1688347828643)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607232308056.png)]

DSL代码:

# 自动补全的索引库
PUT test2
{
  "mappings": {
    "properties": {
      "title":{
        "type": "completion"
      }
    }
  }
}
# 示例数据
POST test2/_doc
{
  "title": ["Sony", "WH-1000XM3"]
}
POST test2/_doc
{
  "title": ["SK-II", "PITERA"]
}
POST test2/_doc
{
  "title": ["Nintendo", "switch"]
}


# 自动补全查询,字段是completion类型
GET /test2/_search
{
  "suggest": {
    "titleSuggest": {
      "text": "so",
      "completion": {
        "field": "title",
        "skip_duplicates": true,
        "size": 10
      }
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlwcOTBR-1688347828643)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230607232523336.png)]

酒店数据自动补全:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1YDhC35-1688347828644)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230610225111649.png)]

RestAPI实现自动补全:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDBcHko9-1688347828644)(C:\Users\25817\AppData\Roaming\Typora\typora-user-images\image-20230610233616368.png)]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值