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


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

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备2 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远2 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218612 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog2 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
Elasticsearch2 天前
Elastic Observability 的跨项目搜索:通过一个查询搜索所有关联项目
elasticsearch
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github