- 博客(40)
- 收藏
- 关注
原创 ES集群的故障转移
摘要:Elasticsearch集群通过故障转移机制保障高可用性。主节点监控集群状态,当检测到节点故障时自动转移分片数据。故障转移分为三阶段:1)心跳检测判定故障节点;2)主节点故障时自动选举新主节点恢复管理;3)数据节点故障时提升副本分片并重建冗余。该机制依靠心跳检测、分片冗余和Raft选举协议实现自动恢复,结合合理配置可确保集群在生产环境中的高可靠性。当副本不足时集群状态降级为yellow,恢复后自动转为green。
2025-06-12 19:29:17
72
原创 ES集群的分布式存储
Elasticsearch通过分片机制实现数据分布式存储和查询。协调节点作为调度中心,在写入时将文档通过hash算法(_routing%分片数)路由到特定分片,并同步副本分片。查询时采用两阶段处理:先向所有相关分片广播请求(scatter phase),再汇总排序结果返回(gather phase)。分片数量不可修改,因其影响数据路由算法。查询无ID文档时会查询所有分片,确保结果完整。这种机制保证了数据均衡存储和全局可搜索性。
2025-06-12 19:10:04
111
原创 ES集群的节点
摘要:Elasticsearch单机部署面临存储容量和单点故障问题,需通过分片(shard)和副本(replica)解决。ES集群包含四种节点类型:候选主节点管理元数据,数据节点处理存储与查询,预处理节点执行数据转换,协调节点路由请求和汇总结果。候选主节点应配置为奇数以避免脑裂问题,即网络故障导致集群出现多个主节点的情况。ES 7.0后已默认配置最小主节点数,防止脑裂发生。生产环境中建议为节点分配单一角色以优化性能。
2025-06-12 17:44:02
242
原创 用idea进行数据同步
本文介绍了RabbitMQ消息队列的配置和使用方法。首先需要在YAML文件中配置RabbitMQ连接参数(主机、端口、用户名密码等),然后通过MqConstants类定义交换机和队列名称。文章详细说明了两种实现方式:基于@Bean的配置类方式集中管理队列和交换机绑定关系,以及基于@RabbitListener注解的灵活监听方式。在业务场景中,通过rabbitTemplate发送新增/修改/删除消息到指定交换机,消费者监听相应队列处理消息。最后给出了Elasticsearch数据同步的具体实现,包括文档删除和
2025-06-12 16:47:54
720
原创 Elasticsearch的数据同步
文章摘要:Elasticsearch数据同步主要有三种方法:1)同步调用:业务模块直接调用搜索服务接口,存在耦合度高、性能低、依赖性强等问题;2)异步通知:通过MQ消息队列实现解耦,业务模块发送消息,搜索服务监听并更新数据;3)监听binlog:利用MySQL的binlog日志和canal中间件监听数据库变化,实现数据同步。三种方法各有特点,其中异步通知和binlog监听更适合微服务架构,能有效降低系统耦合度。(149字)
2025-06-12 14:42:30
299
原创 Elasticsearch 的自动补全以及RestAPI的使用
Elasticsearch自动补全功能摘要:Elasticsearch提供强大的自动补全功能,主要通过CompletionSuggester实现。DSL语句包含建议器名称、用户输入前缀、补全字段等核心参数,支持结果数量控制、去重和模糊匹配。可通过上下文过滤实现分类补全,使用fuzzy参数支持拼写错误纠正。Java实现需构建SearchRequest,配置CompletionSuggestionBuilder,解析返回结果。注意补全字段需提前设为completion类型,不支持分词但可结合search_as_
2025-06-12 14:11:06
302
原创 拼音分词器的配置
摘要:本文介绍了在Elasticsearch中实现拼音分词功能的配置方法。通过安装拼音分词插件,创建自定义分析器my_analyzer,结合IK中文分词器和拼音过滤器,实现了中文文本的拼音转换和索引功能。配置说明详细解释了各参数作用,包括保留完整拼音、首字母缩写等选项。文章特别指出,应在索引创建时使用自定义分词器(包含拼音处理),而在搜索时使用IK分词器(ik_smart),以避免谐音字带来的搜索干扰。
2025-06-11 21:30:16
390
原创 数据的聚合
Elasticsearch聚合分析主要分为桶聚合、度量聚合和管道聚合三类。桶聚合用于文档分组,类似SQL的GROUP BY;度量聚合计算数值指标(如平均值);管道聚合基于其他聚合结果进一步分析。聚合字段需为keyword、数值、日期或布尔类型。DSL实现包括terms桶聚合(按字段分组统计)和avg/metric度量聚合(计算数值指标),支持嵌套聚合和结果排序。Java客户端通过AggregationBuilders构建聚合请求,可处理多级嵌套聚合结果。聚合常与查询结合,仅分析满足条件的文档。
2025-06-11 21:09:15
633
原创 RestClient查询结果处理
本文展示了Elasticsearch Java客户端的基本查询方法。示例1演示了简单匹配查询,执行索引"your_index_name"中title字段的匹配查询;示例2实现带高亮的搜索,对content字段匹配结果添加HTML高亮标签;示例3介绍分页查询,通过from/size参数控制每页结果;示例4展示排序功能,支持按单个或多个字段(如date、views)降序排列。所有示例均包含查询构建、执行和结果处理流程,输出匹配文档总数及内容。代码注释详细解释了各参数作用,如matchQuer
2025-06-11 13:31:05
112
原创 RestClient
RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。
2025-06-10 18:51:35
670
原创 Elasticsearch增删改查语句
Elasticsearch索引操作指南:1.创建索引时可通过settings设置分片数和副本数,mappings定义字段类型;2.支持GET查询索引信息、映射和文档,PUT/POST添加/修改文档,DELETE删除;3.文档操作包含指定ID和自动生成ID两种方式;4.索引命名建议小写字母+数字/下划线,采用业务_数据类型_v版本号格式;5.操作后可查询验证,常见错误包括404(不存在)、409(冲突)和400(格式错误)。
2025-06-10 18:17:09
307
原创 IK分词器
IK分词器是elasticsearch中最受欢迎的中文插件之一,它专门针对中文文本的处理进行了优化,解决了Elasticsearch默认分词器对中文支持不足的问题。
2025-06-10 17:52:48
266
原创 Elasticsearch的索引
摘要: 正向索引以文档ID为基础创建索引(如MySQL),查询时需逐条扫描数据,效率较低。倒排索引(如Elasticsearch)则对文档内容分词,建立词条与文档的映射关系,查询时先匹配词条再定位文档,效率更高。两者的核心区别在于索引结构:正向索引通过文档找内容,倒排索引通过内容反查文档。后者更适用于全文检索等场景。
2025-06-09 21:18:17
308
原创 Elasticsearch
Elasticsearch是一款基于Lucene的分布式搜索引擎,用于海量数据的快速检索和高亮显示,广泛应用于商品搜索、日志分析和实时监控等领域。它作为Elastic Stack(ELK)的核心组件,负责数据存储、搜索和分析,而Kibana、Logstash等工具可被替代。相比Lucene,Elasticsearch支持水平扩展和RESTful接口,兼容多种语言。其发展始于2004年,2010年正式命名为Elasticsearch,最新版本为7.12.1。Elasticsearch解决了Lucene扩展性不
2025-06-09 20:54:37
428
原创 MySQL主从复制
主从复制是指将主数据库的DDL和DML操作通过二进制传到从库服务器当中,让后从库对这些日志进行执行,从而使得从库和主库数据保持同步。从上图来看,复制分成三步: 1.Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。二进制日志:记录了所有的DDL(数据定义语言)DML(数据操纵语言),但不包括(select,show)2.从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log。row:基于行的日志记录,记录每一行的变更,同时也是默认格式。
2025-05-11 16:31:02
186
原创 SQL语句的优化
Using filesort:通过表的索引或全表扫描,读取吗,满足条件的数据行,让后在排序缓冲区sort buffer 中完成排序操作,所有不是通过索引直接返回结果的排序都叫filesort排序。1. 在InnODB里面,行锁是针对索引加的锁,并不是针对记录加的锁,所以在使用Update语句的时候,要避免出现表锁的情况,同样的索引不能够失效,否则也会从行锁升级为表锁。当页中的记录达到MERGE-THRESHOLD(默认为页的50%),InnoDB会开始寻找最靠近的页,看看是否可以将两个页进行合并。
2025-05-11 16:06:51
1000
原创 sql的性能分析
前缀索引:当字段类型为字符串的时候,设置索引就会很长,索引,我们可以使用前缀索引,取得字符串的前n个字段来提高索引的效率。前缀的长度是选择性的,索引选择性索引值和数据表中的记录总数的比值,索引选择性越高,那么查询的效率也就越高。最左前缀法则:表中的最左侧的字段必须存在,查询从索引的最左列开始,并且不跳过索引中的列,如果跳过,索引将部分失效(后面的字段索引失效)。覆盖索引就是说明在sql语句查询的时候,不需要再次回表,只需要在二级索引下就能够找到语句需要返回的字段,这就是所谓的覆盖索引。
2025-05-11 16:01:34
877
原创 MySQL的索引分类
如果表没有主键,或没有合适的唯一索引,则InooDB会自动生成一个rowid作为隐藏的聚集索引。当数据库查询的时候,会进行回表查询也就是通过二级索引去查询聚集索引来进行数据的查询。如果没有主键,将使用第一个唯一UNIQUE索引作为聚集索引。聚集索引的选取规则,如果存在主键,主键索引就是聚集索引。
2025-05-11 15:59:47
181
原创 布隆过滤器的概述
布隆过滤器是一个长度为m的数组,用于存储元素的哈希映射结果。布隆过滤器通过多哈希函数映射到二进制位数组,以极小的空间代价实现高效存在性判断。
2025-05-06 00:28:10
394
原创 乐观锁的核心流程
乐观锁是一种并发控制机制,如果多种事务并发冲突的概率比较低,所以在数据操作的时候布里吉加锁,在提交时检查数据是否被其他事务修改过,通过版本号(version)或时间戳(Timestamp)实现,确保数据一致性。
2025-05-03 17:23:58
785
原创 redis的哨兵模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。Redis从2.8开始正式提供了Sentinel(哨)架构来解决这个问题。能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
2025-04-30 17:10:09
310
原创 Redis主从复制
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/eader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。默认情况下,每台Redis服务器都是主节点:且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
2025-04-29 21:18:17
466
原创 SpringBoot整合redis
SpringBoot操作数据:封装在spring-data 里面。SpringData也是和springBoot齐名的项目。注意:springboot2.x之后原来的jedis被替换成了lettucejedis:采用的直连,用多个线程的操作的话,是不安全的,使用jedis pool连接池。lettuce:采用netty实力可以在多个线程之间进行共享,不存在线程安全问题,可以减少现成数据,更像Nio模式。
2025-04-29 16:11:55
309
原创 Jedis的介绍和应用
我们使用java操作redis什么事jedis?redis官方推荐的java连接开发工具,使用java操作redis中间件。
2025-04-28 14:14:56
378
原创 Redis事务的介绍
事务的本质:一组命令的集合。事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行。拥有一次性,顺序性,排他性,执行一些列的命令。
2025-04-26 20:07:56
246
原创 为什么要用NOSQL
引言:引言:在90年代,一个基本的网站访问量都不是很大,所以数据库的数量也就不是那么重要,并且由于更多的过去使用静态的网页html~比如hao123.com这样的导航网站,所以静态网站的压力很小,服务器也没有很大的压力,所以这样的情况下,单机的数据库就够用。在最早的时候,网站的瓶颈包含:1.数据量过大,导致数据库放不下。2.数据的索引过大使用(b+tree),机器也放不下。3.随着互联网的发展,访问量越来越大,服务器也越来越大。综合以上出现了新的技术。
2025-04-24 17:31:32
742
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人