Elasticsearch系列
文章平均质量分 91
为什么mysql存储数据要用b+tree去做,为什么时序数据库又是用lsm去做索引,为什么es又是用倒排索引,各种索引之间有什么不同?我们又该在什么时候选择什么索引呢?我将一一揭晓这些答案。
蓝胖子的编程梦
多年互联网大厂开发经验,深耕后端领域,擅长golang、云原生技术栈。对性能优化和服务监控方向颇有心得,对分布式链路追踪,故障诊断,实时数据分析,监控告警平台建设,性能优化及架构设计有深入研究
展开
-
MYSQL 同步到ES 如何设计架构保持一致性
最后,我来总结下,采用canal去做MySQL 到ES的数据同步,我们的确是可以做到高可靠性的,但是要注意的canal的消息消费是有可能出现重复消息的,不过由于目前我们部门没有对消息进行统计的需求,仅仅是将数据进行更新或者插入,存在即更新,没有即插入,所以是幂等,可以不用太过关注。原创 2024-03-21 15:56:29 · 417 阅读 · 0 评论 -
Elasticsearch 主副分片切换过程中对业务写入有影响吗
🍊🍉🍋 先说下结论,只要集群中的工作节点过半,有候选的master节点,挂掉的节点中不同时包含索引的主分片和副分片,那么ES是可以做到让业务无感知的进行主副分片切换的。蓝胖子会先讲解下ES集群写入文档的原理,并对异常情况进行分析,最后来模拟集群写入过程中节点宕机的情况来对这个问题展开讨论。原创 2024-03-16 00:43:10 · 885 阅读 · 0 评论 -
Elasticsearch 如何保证写入过程中不丢失数据的
在本文开始前,首先明白一个点,平时我们说的组件数据不丢失究竟是在指什么,如果你往ES写入数据,ES返回给你写入错误,这个不算数据丢失。如果你往ES写入数据,ES返回给你成功,但是后续因为ES节点重启或宕机导致写入的数据不见了,这个才叫数据丢失。4, 在文件系统缓存中的segment总归还是要写入磁盘,默认每30分钟,或者当translog的日志量达到某个量级时,segment会进行落盘,同时删掉translog日志。1,写入时,ES会首先往一块内存缓存中写入数据,这快内存缓存在ES中叫。原创 2024-03-12 18:23:30 · 602 阅读 · 0 评论 -
【elasticsearch系列】5分钟掌握查询原理--lucene常见查询类型原理分析
大家好,我是蓝胖子,在上一节我提到要想彻底搞懂elasticsearch 慢查询的原因,必须搞懂lucene的查询原理,所以在上一节我分析了lucene查询的整体流程,除此以外,还必须要搞懂各种查询类型内部是如何工作,比如比较复杂的查询是将一个大查询分解成了小查询,然后通过对小查询的结果进行合并得到最终结果。今天就来看看几种比较常见的查询其内部的工作原理。原创 2023-12-12 15:48:32 · 916 阅读 · 0 评论 -
【Elasticsearch系列】5分钟掌握查询原理-lucece查询逻辑介绍
通过本篇文章,应该可以对lucene的查询过程有了大概的了解,但其实对于elasticsearch的慢查询分析还远远不够,因为像布尔查询,wilcard之类的比较复杂的查询,我们还得弄懂,它们底层是究竟如何把一个大查询分解成小查询的。才能更好的弄懂查询耗时的原因,所以在下一节,我会讲解这些比较常见的查询类型的内部重写和查询逻辑。原创 2023-12-08 17:36:36 · 1197 阅读 · 0 评论 -
【Elasticsearch系列】elasticsearch wildcard 慢查询原因分析(深入到源码!!!)
大家好,我是蓝胖子,前段时间线上elasticsearch集群遇到多次wildcard产生的性能问题, elasticsearch wildcard 一直是容易引发elasticsearch 容易宕机的一个风险点, 但究竟它为何消耗cpu呢?又该如何理解elasticsearch profile api的返回结果呢?在探索了部分源码后,我将在这篇文章一一揭晓答案。原创 2023-09-05 14:20:03 · 713 阅读 · 0 评论 -
【Elasticsearch】甩出11张图-让我们来构想(实现)一个倒排索引
在介绍倒排索引之前,先看看传统b+tree索引是如何存储数据的,每次新增数据的时候,b+tree就会往自身节点上添加上新增数据的key值,如果节点达到了分裂的条件,那么还会将一个节点分裂成两个节点。想一个场景,如果对用户的性别建立b+tree索引,性别只有男女之分,这样存在b+tree里是不是会存很多重复的key,如果用户数据量很大,我们想筛选出性别是男性的用户,是不是要遍历大量的数据。原创 2023-03-23 14:33:22 · 527 阅读 · 0 评论 -
疯一样的向自己发问 - 剖析lsm 索引原理
lsm 更像是一种设计索引的思想。它把数据分为两个部分,一部分放在内存里,一部分是存放在磁盘上,内存里面的数据检索方式可以利用红黑树,跳表这种时间复杂度低的数据结构进行检索。而当上。此时写入磁盘的方式是顺序写,这也是为什么lsm写入性能高的原因。原创 2023-03-20 15:53:31 · 154 阅读 · 0 评论