深圳建站公司哪个济南兴田德润简介如何利用电商平台推广
2026/4/6 5:46:01 网站建设 项目流程
深圳建站公司哪个济南兴田德润简介,如何利用电商平台推广,安徽建设银行网站,平泉市住房和城乡建设局网站当你在 Kibana 中查询刚生成的日志#xff0c;或在电商网站搜索刚上架的商品时#xff0c;可能会好奇#xff1a;数据写入后不到 1 秒就能搜到#xff0c;这是如何实现的#xff1f; 这背后就是 Elasticsearch (ES) 的“近实时”#xff08;Near Real-Time, NRT#xff…当你在 Kibana 中查询刚生成的日志或在电商网站搜索刚上架的商品时可能会好奇数据写入后不到 1 秒就能搜到这是如何实现的这背后就是 Elasticsearch (ES) 的“近实时”Near Real-Time, NRT能力。本文将通俗地解析从写入到可查的完整链路。 什么是“近实时” (NRT)实时 (Real-time)数据写入后立刻对所有操作可见。近实时 (Near Real-time)数据写入后通常在1 秒内即可被搜索到。ES 官方也强调其提供的是近实时搜索默认情况下文档在写入后 1 秒内可被检索。这里的“秒级延迟”正是实现高性能写入和高并发查询的关键设计权衡。 为什么能这么快ES 的速度源于其精巧的架构设计分布式分片一个索引被拆分为多个主分片Primary Shard分布在不同节点上并行处理请求极大提升了吞吐量。倒排索引这是搜索引擎的核心。它将文档内容分词形成“词 → 文档列表”的映射查询时直接定位词无需全表扫描效率极高。Lucene 与 Segment每个分片本质上是一个 Lucene 实例由多个不可变的Segment (段)构成。查询时ES 会并行搜索所有相关分片的所有 Segment并合并结果。️ 数据写入与可查的完整链路一条文档从写入到可被搜索会经历以下关键阶段请求路由客户端请求到达任一节点协调节点该节点根据文档 ID 计算出目标主分片并将请求转发过去。写入内存与日志主分片节点将文档写入Index Buffer (内存缓冲区)同时追加写入Translog (事务日志)。此时数据在内存中不可搜索。Translog 刷盘为保证数据安全Translog 会定期默认每 5 秒或每次请求后默认策略通过fsync强制写入磁盘。这确保了即使节点宕机数据也能从 Translog 中恢复。Refresh (刷新) - 变为可查这是实现“近实时”的核心。默认每秒ES 会将 Index Buffer 中的文档生成一个新 Segment并写入文件系统缓存 (OS Cache)。这个新 Segment 会立即被打开其中的文档从此刻起可被搜索。此过程不保证数据已落盘。Flush (刷盘) - 持久化当 Translog 达到一定大小默认 512MB或时间默认 30 分钟时会触发 Flush。Flush 会执行一次 Refresh然后调用fsync将所有 Segment 强制写入磁盘并更新提交点 (Commit Point)最后清空旧的 Translog。至此数据才完成了真正的持久化。副本同步主分片写入成功后会将操作并行发送给所有副本分片。副本分片重复上述写入、Refresh 和 Flush 流程。只有当所有副本都确认成功后主分片才会向客户端返回成功响应。 更新与删除是如何实现的由于 Segment 是不可变的ES 采用“标记-删除”和“新增”的策略删除在.del文件中标记该文档为已删除。查询时结果会过滤掉这些被标记的文档。更新本质是“先删除后新增”。旧文档被标记删除新版本的文档作为一个新文档被索引到新的 Segment 中。 Segment 合并 (Merge)频繁的 Refresh 会产生大量小 Segment影响查询效率。为此ES 后台会启动Merge (合并)任务将多个小 Segment 合并成少数几个大 Segment。在合并过程中物理删除那些已被标记删除的文档。更新提交点并删除旧的小 Segment 文件。由于 Segment 不可变合并过程不会阻塞写入和查询但会消耗 I/O 和 CPU 资源。 补充按 ID 查询为何更快你可能会发现有时刚写入的文档通过GET /index/_doc/id能立刻查到但搜索却搜不到。这是因为按 ID 查询会先检查 Translog 中是否有该文档的最新版本因此能读到最新数据。全文搜索依赖倒排索引必须等待 Refresh 生成新的 Segment 后才能被搜索到。⚙️ 相关参数与调优建议理解以下参数有助于你根据业务场景进行调优index.refresh_interval控制 Refresh 频率。调大如30s可提升写入吞吐调小如100ms可加快搜索可见性但会增加开销。批量导入时可临时设为-1关闭完成后再恢复。index.translog.durability和sync_interval控制 Translog 的刷盘策略。request模式默认每次请求后刷盘最安全但性能稍低async模式如每 5s 刷盘性能更高但有数据丢失风险。index.translog.flush_threshold_size控制 Translog 触发 Flush 的大小阈值默认 512MB。 关注公众号【云技纵横】目前正在更新分布式缓存进阶技巧和干货 总结Elasticsearch 的“近实时”并非魔法而是通过以下设计实现的近实时可见依靠Refresh机制将内存数据快速生成 Segment 并提供搜索。数据不丢失依靠Translog预写日志确保数据安全。最终持久化依靠Flush和Merge机制将数据稳定写入磁盘并优化查询性能。正是这种精巧的平衡使得 ES 能够在亿级数据量下依然实现毫秒级的查询响应。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询