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的负担,而较长的刷新间隔可能导致搜索的实时性下降。在性能和实时性之间需要找到平衡点,以满足你的应用需求。


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

相关推荐
爱写代码的森5 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
广州灵眸科技有限公司6 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手8 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
HLC++9 小时前
Linux的进程间通信
android·linux·服务器
段一凡-华北理工大学9 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
阿里云大数据AI技术9 小时前
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
elasticsearch
白露与泡影10 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
阿里云大数据AI技术11 小时前
Search Lake:ES x Paimon 让湖上多模态数据可搜可用
人工智能·elasticsearch·搜索引擎
oradh11 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
神奇霸王龙11 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程