随笔分类 -  微服务

摘要:集群 单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点 单点故障问题:将分片数据在不同节点备份(replica ) ES集群相关概念: 集群(cluster):一组拥有共同的 阅读全文
posted @ 2025-01-22 09:52 一杯水M 阅读(30) 评论(0) 推荐(0) 编辑
摘要:数据同步 elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步。 异步通知 流程如下: hotel-admin对mysql数据库数据完成增、删、改后,发送MQ 阅读全文
posted @ 2025-01-21 15:05 一杯水M 阅读(17) 评论(0) 推荐(0) 编辑
摘要:根据用户输入的字母,提示完整词条的功能,就是自动补全。 索引库中就需要有词条对应的拼音数据,使用拼音分词将指定字段重新分词。 拼音分词器 要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:https://github.com/med 阅读全文
posted @ 2025-01-20 16:16 一杯水M 阅读(21) 评论(0) 推荐(0) 编辑
摘要:API语法 聚合条件与query条件同级别,因此需要使用request.source()来指定聚合条件。 聚合的结果解析: @Override public Map<String, List<String>> filters(RequestParams params) { try { // 1.准备 阅读全文
posted @ 2025-01-17 13:40 一杯水M 阅读(6) 评论(0) 推荐(0) 编辑
摘要:**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合的种类 阅读全文
posted @ 2025-01-17 13:32 一杯水M 阅读(14) 评论(0) 推荐(0) 编辑
摘要:match_all查询 代码解读: 第一步,创建SearchRequest对象,指定索引库名 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等 query():代表查询条件,利用QueryBuilders.matchAllQuery()构建一个matc 阅读全文
posted @ 2025-01-17 09:35 一杯水M 阅读(4) 评论(0) 推荐(0) 编辑
摘要:搜索的结果可以按照用户指定的方式去处理或展示。 排序 分页 搜索关键词高亮 排序 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 普通字段排序 keyword、数值 阅读全文
posted @ 2025-01-16 14:42 一杯水M 阅读(13) 评论(0) 推荐(0) 编辑
摘要:1、DSL查询文档 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索 阅读全文
posted @ 2025-01-16 11:14 一杯水M 阅读(58) 评论(0) 推荐(0) 编辑
摘要:RestClient操作文档 新增文档 将DB表中的数据同步到elasticsearch 1)查询数据库 1.1)数据库查询后的结果是一个Hotel类型的对象 1 @Data 2 @TableName("tb_hotel") 3 public class Hotel { 4 @TableId(typ 阅读全文
posted @ 2025-01-15 13:16 一杯水M 阅读(7) 评论(0) 推荐(0) 编辑
摘要:elasticsearch的索引库操作 索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,常见的简单类型有: 字符 阅读全文
posted @ 2025-01-14 15:59 一杯水M 阅读(26) 评论(0) 推荐(0) 编辑
摘要:elasticSearch采用的倒排索引,那么如何使用elasticSearch 一、安装elasticSearch 1、创建目录用于存放下载的es.tar和kibana.tar /usr/local/docker/tools cd /usr/local/docker/tools 2、上传tar 启 阅读全文
posted @ 2025-01-02 17:28 一杯水M 阅读(434) 评论(0) 推荐(0) 编辑
摘要:什么是elasticsearch 一款非常强大的开源搜索引擎 elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。 采用倒排索引 正向索引:正排索引按照文档的顺序存储索引,索引的键是文档的标识符(如ID),值是文档的详细信息,如标题、内容摘要、发布日期等。这种结构 阅读全文
posted @ 2025-01-02 11:00 一杯水M 阅读(11) 评论(0) 推荐(0) 编辑
摘要:Docker:是一个发布应用程序的技术 Docker的核心 镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。 镜像就是磁盘上的文件 包含完整运行环境,可以在任意Linux操作系统上运行 参考:Docker 镜像操作 - 一杯水M - 博客园 D 阅读全文
posted @ 2024-12-04 14:24 一杯水M 阅读(3) 评论(0) 推荐(0) 编辑
摘要:开发思路: 一、开发微服务 二、微服务之间通讯 三、微服务集群之间通讯 四、Nacos集群、Nginx(反向代理、负载均衡) 五、客户端通过网关访问微服务 一、开发微服务 服务的开发(https://www.cnblogs.com/WarBlog/p/15348825.html) 创建maven项目 阅读全文
posted @ 2022-10-19 16:06 一杯水M 阅读(1526) 评论(0) 推荐(0) 编辑
摘要:测试发送Object类型消息 在SpringAMQP的发送方法中,接收消息的类型是Object,也就是说我们可以发送任意对象类型的消息,SpringAMQP会帮我们序列化为字节后发送。 consumer中利用@Bean声明一个队列 @Bean public Queue objectQueue(){ 阅读全文
posted @ 2021-10-29 13:32 一杯水M 阅读(250) 评论(0) 推荐(0) 编辑
摘要:TopicExchange与DirectExchange类似,区别在于routingKey必须是多个单词的列表,并且以 . 分割。Queue与Exchange指定BindingKey时可以使用通配符:#:代指0个或多个单词*:代指一个单词 TopicExchange的使用 实现思路如下: 在cons 阅读全文
posted @ 2021-10-29 10:39 一杯水M 阅读(106) 评论(0) 推荐(0) 编辑
摘要:Direct Exchange 会将接收到的消息根据规则路由到指定的Queue,因此称为路由模式(routes)。 每一个Queue都与Exchange设置一个BindingKey 发布者发送消息时,指定消息的RoutingKey Exchange将消息路由到BindingKey与消息Routing 阅读全文
posted @ 2021-10-29 10:15 一杯水M 阅读(140) 评论(0) 推荐(0) 编辑
摘要:实现思路如下:在consumer服务中,利用代码声明队列、交换机,并将两者绑定在consumer服务中,编写两个消费者方法,分别监听fanout.queue1和fanout.queue2在publisher中编写测试方法,向fanout发送消息 在consumer服务声明FanoutExchange 阅读全文
posted @ 2021-10-28 17:09 一杯水M 阅读(111) 评论(0) 推荐(0) 编辑
摘要:发布订阅模式:将同一消息发送给多个消费者。实现方式是加入了exchange(交换机) 注意:exchange负责消息路由,而不是存储,路由失败则消息丢失 常见exchange类型包括: Fanout:广播 Direct:路由 Topic:话题 阅读全文
posted @ 2021-10-28 16:57 一杯水M 阅读(65) 评论(0) 推荐(0) 编辑
摘要:Work queue,工作队列,可以提高消息处理速度,避免队列消息堆积 模拟WorkQueue,实现一个队列绑定多个消费者 基本思路如下: 在publisher服务中定义测试方法,每秒产生50条消息,发送到simple.queue 在consumer服务中定义两个消息监听者,都监听simple.qu 阅读全文
posted @ 2021-10-28 16:44 一杯水M 阅读(73) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示