ES的近实时性是什么意思?原理是什么?

ES 的"近实时"(near real-time)是指当你往 ES 索引(Index)中插入、更新或删除文档时,这些变更几乎立刻就对用户可见和可查询。然而,它并不是真正的实时,因为 ES 采用了一些优化和缓冲机制,以提高性能和吞吐量。

🟥 具体来说,ES的近实时性质包括以下几个方面:

  1. 索引操作的延迟: 当我们执行索引操作(插入、更新、删除文档)时,ES会将这些操作存储在一个缓冲区(buffer)中。这意味着虽然变更几乎立刻对用户可见,但实际上它们可能并没有立刻写入硬盘。ES会定期将缓冲区中的操作批量写入磁盘,这个操作可能会有少量延迟。

  2. 刷新机制: ES会定期执行一个操作叫做"刷新"。这个操作会确保在硬盘上的所有操作都被提交(committed),并且使这些变更对搜索可见。默认情况下,ES每秒执行一次刷新操作。这意味着,在某些情况下,你可能需要等待一秒钟才能搜索到最新的变更。

  3. 搜索的近实时性: ES的搜索操作通常是近实时的,因为它们可以立即反映已经被索引的文档。在上述刷新操作执行前,搜索仍然可以进行,但不能保证最新的变更已经被搜索到。

不过,我们也可以配置ES的近实时性,包括刷新频率等,以满足你的具体需求。近实时性是ES在维护高性能和数据一致性之间的一种权衡,允许我们根据应用的要求进行调整。在许多情况下,ES的近实时性对于大多数应用已经足够,但在某些特定应用中,可能需要更高的实时性。

🟥 以下是一些影响ES近实时性的主要配置项:

  1. 刷新间隔(Refresh Interval): 刷新是将在内存中的索引数据写入磁盘,从而使变更对搜索可见的过程。我们可以配置刷新的间隔时间,通常以毫秒为单位。默认情况下,ES每秒执行一次刷新,其含义就是一秒内的变更最多需要等待一秒才能被搜索到。我们可以通过修改index.refresh_interval 来调整刷新的频率。[官方文档地址](https://www.elastic.co/guide/en/elasticsearch/reference/8.1/index-modules.html#index-refresh-interval-setting "官方文档地址")

  2. 索引的刷新策略: ES支持不同的索引刷新策略,包括手动刷新、自动刷新和index.refresh_interval。手动刷新需要显式地调用_refresh API [官方文档地址](https://www.elastic.co/guide/en/elasticsearch/reference/8.1/indices-refresh.html "官方文档地址")。自动刷新是在上述配置的刷新间隔内自动执行。我们可以根据应用的需求选择合适的刷新策略。

  3. 索引排序: 当你索引文档时,ES会自动对文档进行排序以提高搜索性能。这种排序也会影响近实时性,因为排序后的文档更容易被检索。你可以使用sort属性来配置索引排序的字段。[官方文档地址](https://www.elastic.co/guide/en/elasticsearch/reference/8.1/index-modules-index-sorting.html "官方文档地址")

📢 注意:更频繁的刷新会增加磁盘和CPU的负担,而较长的刷新间隔可能导致搜索的实时性下降。在性能和实时性之间需要找到平衡点,以满足你的应用需求。


让我们每天进步一点点,感谢您的阅读。别忘了点赞、收藏和关注~

相关推荐
@兽血沸腾31 分钟前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
freejackman34 分钟前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
.痞老板.2 小时前
mysql初阶--增删改查操作
数据库·mysql
讯捷蓝达6 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
lambo mercy7 小时前
AI智能租房助手
数据库
浮生若城8 小时前
MySQL:库与表的操作
数据库·mysql
薛定谔的悦8 小时前
光储充一体机从主控到执行单元的双层架构
数据库·mongodb·架构
数字新视界8 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落8 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
csdn_aspnet9 小时前
Redis 入门:Windows、Mac安装指南
数据库·windows·redis·缓存·mac