文章列表

如何保证 ES 和数据库的数据一致性?

如何保证 ES 和数据库的数据一致性?

深度解析ES与数据库的数据一致性问题:从同步双写、MQ异步同步到Canal监听binlog的生产主流方案,配合本地消息表防丢失、ES外部版本号防乱序、定时对账兜底,实现秒级最终一致性,并附面试高频追问与实战细节,帮你彻底搞定分布式双写一致性难题。


犬小哈2026/9/17Java面试八股文
如何优化 ElasticSearch 搜索性能?

如何优化 ElasticSearch 搜索性能?

本文系统讲解 ElasticSearch 搜索性能优化实战:从文件系统缓存、SSD 配置,到 filter 替代 query、keyword 精确匹配、深分页 search_after 方案,再到分片策略、Mapping 建模与 force merge 段合并,层层拆解原理与权衡,并附高频面试追问与记忆口诀,助你全面掌握 ES 调优精髓。


犬小哈2026/9/17Java面试八股文
什么是 Elasticsearch 的深度分页问题?如何解决?

什么是 Elasticsearch 的深度分页问题?如何解决?

详解Elasticsearch深度分页问题:from+size翻页越深,各分片和协调节点需加载排序的数据量越大,ES默认限制10000条。本文对比scroll、search_after、PIT+search_after等方案的原理与适用场景,附面试高频追问与记忆口诀,助你彻底搞懂ES深度分页。


犬小哈2026/8/27Java面试八股文
Elasticsearch 支持事务吗?为什么?

Elasticsearch 支持事务吗?为什么?

Elasticsearch 支持事务吗?答案是不支持 ACID 事务。本文从 Lucene segment 不可变设计与跨分片分布式架构两大底层原因讲透 ES 为何没有事务,解析单文档原子性、translog 持久性、乐观锁等补偿机制,并给出 ES 与 MySQL 数据一致性的实战方案,面试必备深度解析。


犬小哈2026/8/27Java面试八股文
ES 不支持 decimal,如何避免丢失精度?

ES 不支持 decimal,如何避免丢失精度?

ES 不支持 decimal,float/double 按 IEEE 754 存储,存金额必丢精度。本文详解三种主流方案:金额转分存 long、scaled_float 缩放存储、keyword 字符串兜底,并覆盖 JSON 序列化、前端 JS 大数、聚合精度暗坑等全链路踩坑点,助你面试与生产双通关。


犬小哈2026/8/27Java面试八股文
ElasticSearch 为什么快?

ElasticSearch 为什么快?

ElasticSearch 为什么快?本文从数据结构、存储、架构三层深入解析:倒排索引跳过全表扫描,FST + Term Index 常驻内存最少一次磁盘寻址,不可变 Segment 与 Doc Values 列式存储吃满缓存,分片并行与缓存体系支撑高并发,NRT 近实时实现 1 秒可见性。附高频追问与面试变体,助你面试通关。


犬小哈2026/8/26Java面试八股文
倒排索引是什么?

倒排索引是什么?

倒排索引是 Elasticsearch 全文检索的核心数据结构,通过“词条→文档列表”的反向映射,实现近乎 O(1) 的关键词查询。本文深入讲解倒排索引与正排索引的区别,剖析 Term Index(FST)、Term Dictionary、Posting List 三层内部结构,以及 FOR 压缩与 Roaring Bitmap 优化原理,并附 Java 实现示例与 ES 面试高频追问,助你彻底搞懂 ES 为什么查询快。


犬小哈2026/8/25Java面试八股文
什么是 MESI 缓存一致性协议?

什么是 MESI 缓存一致性协议?

MESI 是主流 CPU 的多核缓存一致性协议,通过 Modified、Exclusive、Shared、Invalid 四种状态配合总线嗅探机制,保证各核心私有缓存中数据副本一致。本文深入讲解缓存不一致问题、状态流转示例、Store Buffer 与内存屏障的关系,并延伸到伪共享、缓存行填充及 volatile 可见性原理,帮你把 Java 并发的硬件底层彻底讲通,面试必备。


犬小哈2026/8/25Java面试八股文