[Elasticsearch]ES近似实时搜索的原因|ES非实时搜索的原因|ES Near real-time search

news2024/11/15 19:56:24

Elasticsearch-专栏👈️

往期回顾:

ES单一查询定义👈️

ES深分页问题👈️

ES商城搜索实战👈️

ES环境搭建:单节点模式/集群模式👈️

ES开启认证👈️

近似实时搜索(Near real-time search)是指文档存储在Elasticsearch,它会在 1 秒内近乎实时地建立索引并完全可搜索。

究其原因,是在于ES的索引存储机制。

当索引一个文档(即在ES中插入一个文档,后面都使用术语:索引文档),会首先写入到内存缓冲区(In-memory buffer)中,此时的文档是不能被检索到的,即不可查,读取不到的;

当内存缓冲区满或者ES每秒定期刷新(refresh)索引(仅限于过去30s内收到一个或者多个搜索请求的索引),ES会将内存缓冲区In-memory buffer)中的数据在到文件系统缓存(filesystem cache)写入一个新的segement,然后清空内存缓冲区(In-memory buffer),此时的文档是可读的,可以被检索到的;这个操作比完全提交到磁盘要轻量许多,文件系统缓存的目的就是减少磁盘I/O操作的次数,经常执行不会降低ES性能。

也就是说,近似实时查询的原因是有一个等待写入到一个segement的时间间隔。

文件系统缓存被操作系统自动管理,异步的(fsync)将这个segement刷入(flush)到磁盘,同时标记这个segement已经被提交。

到这里,可能会疑惑segement是个什么东西?接下来一起看下ES索引结构。并将以图示形象的表示segment产生即落盘的过程。

Elasticsearch是基于的Java库Lucene开发的,Lucene引入了按段搜索(per-segement search)的概念。在Lucene 中索引一词的意思是“段的集合(a collection of segments )加上一个提交点(a commit point)”。它是可以检索的。

在这里插入图片描述

索引文档,首先写入内存缓冲区,此时并未写入到segement,不可读。

在这里插入图片描述

发生refresh(ES每秒refresh一次索引),生成新的segement添加到提交点(Commit point)写入到文件系统缓存,并清除内存缓冲区(In-memory)。注意此时还未被提交到磁盘(等待操作系统刷盘落盘),因此下图中以灰色表示,但是从此刻开始都是可检索的

在这里插入图片描述

写入文件系统缓存的segement已经被操作系统管理,等待操作系统写入磁盘。当操作系统将其写入(fsync)磁盘,就完成了提交。此时被标记为已提交,清空文件系统缓存。

在这里插入图片描述

Elasticsearch-专栏👈️

往期回顾:

ES单一查询定义👈️

ES深分页问题👈️

ES商城搜索实战👈️

ES环境搭建:单节点模式/集群模式👈️

ES开启认证👈️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

稀疏辅助信号平滑方法在一维信号降噪和旋转机械故障诊断中的应用(MATLAB)

基于形态成分分析理论(MCA)的稀疏辅助信号分解方法是由信号的形态多样性来分解信号中添加性的混合信号成分,它最早被应用在图像处理领域,后来被引入到一维信号的处理中。在基于MCA稀疏辅助的信号分析模型中,总变差方法…

自定义“请求头”

请求头是HTTP请求的重要部分,可以用“头部字典”按需定制请求头。 (笔记模板由python脚本于2024年07月12日 19:28:44创建,本篇笔记适合喜欢钻研web知识点的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free…

JavaDS —— 栈 Stack 和 队列 Queue

栈的概念 栈是一种先进后出的线性表,只允许在固定的一端进行插入和删除操作。 进行插入和删除操作的一端被称为栈顶,另一端被称为栈底 栈的插入操作叫做进栈/压栈/入栈 栈的删除操作叫做出栈 现实生活中栈的例子: 栈的模拟实现 下面是Jav…

mysql和oracle数据库的备份和迁移

本文主要讲述了mysql数据库的备份和迁移;oracle的肯定是备份和数据迁移,同时介绍了linux的定时任务。 一、mysql Docker容器下mysql备份方法 1、数据库备份 # 进入容器docker exec -it 《containerId容器id》 /bin/bash# mysqldump命令备份并生成数据…

02MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件 画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本 定时器与定时事件

近期matlab学习笔记,学习是一个记录,反复的过程

近期matlab学习笔记,学习是一个记录,反复的过程 matlab的mlx文件在运行的时候,不需要在文件夹路径下,也能运行,但是需要调用子函数时,就需要在文件所在路径下运行 那就先运行子函数,把路径换过来…

【STM32CubeMX安装教程】

【STM32CubeMX安装教程】 1. 前言2. 下载软件3. 安装配置4. 测试5. 小结 1. 前言 STM32CubeMX是一款图形化工具,可以非常轻松地配置STM32微控制器和微处理器,以及为Arm Cortex-M内核生成相应的初始化C代码,或为Arm Cortex-A内核生成部分Linu…

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App 定制化

Mybatis-plus 集成 PostgreSQL 数据库自增序列问题记录

1.创建序列并绑定id CREATE SEQUENCE biz_factory_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;"id" int4 NOT NULL DEFAULT nextval(sys_user_seq::regclass), 2.实体设置KeySequence和TableId注解 注意IdType.INPUT 和 KeySequence(value …

docker inspect 如何提取容器的ip和端口 网络信息?

目录 通过原生Linux命令过滤找到IP 通过jq工具找到IP 使用docker -f 的过滤(模板) 查找端口映射信息 查看容器内部细节 docker inspect 容器ID或容器名 通过原生Linux命令过滤找到IP 通过jq工具找到IP jq 是一个轻量级且灵活的命令行工具&#xf…

通过FallbackFactory接口实现降级逻辑

触发限流或熔断后的请求不一定要直接报错,也可以返回一些默认数据或者友好提示,用户体验会更好。 给FeignClient编写失败后的降级逻辑有两种方式: 方式一:FallbackClass,无法对远程调用的异常做处理方式二&#xff1a…

GenAl如何改变 DevOps 中的软件测试?

TestComplete 是一款自动化UI测试工具,这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎,可以自动记录和回放用户的操作,方便用户进行UI(用户界面&…

读人工智能全传11人工智能会出什么错

1. 人工智能会出什么错 1.1. 一些报道是公正合理的,不过坦白地说,大部分报道都愚蠢得无可救药 1.2. 一些报道颇有知识性和引导性,而大部分则是杞人忧天式的恐吓 1.3. 滑稽的报道迎合了大众对人工智能的“终结者式恐惧” 1.3.1. 我们创造出…

python库(13):Tablib库简化数据处理

1 Tablib简介 数据处理是一个常见且重要的任务。无论是数据科学、机器学习,还是日常数据分析,都需要处理和管理大量的数据。然而,标准库中的工具有时显得不够直观和简便。这时,我们可以借助第三方库来简化数据处理流程。Tablib 就…

一.3.(1)结型MOSFET场效应管的结构和工作原理;

N沟道结型MOSFET的结构 看完上图,会发现其实本质上二极管,三极管,MOS管都是PN结,如果第一章一.1.(1)半导体基础知识_木头的最外层电子是多少个-CSDN博客 理解消化以后,发现底层原理都一样。 例如…

Linux进程编程(使用fork函数创建进程以及fork函数的实际引用场景)

目录 一、进程以及相关概念和指令 1.什么是进程、什么是程序、有什么区别? 2.如何查看系统中有哪些进程? 3.什么是进程标识符? 4.什么叫父进程,什么叫子进程? 二、进程的创建 三、fork函数的实际应用场景 总结…

[每周一更]-(第105期):SSL证书过期后引发的DNS缓存问题

问题回顾: ​ 上班路上收到ZeroSSL邮件通知我们清点项目的SSL证书到期了,到公司还是登录网址查看信息,一看果然是7.10也就是今天到期,开始看下acme.sh的定制任务为何没生效,一看crontab脚本,日志任务丢垃圾…

Java高频面试基础知识点整理13

干货分享,感谢您的阅读!背景​​​​​​高频面试题基本总结回顾(含笔试高频算法整理) 最全文章见:Java高频面试基础知识点整理 (一)Java基础高频知识考点 针对人员: 1.全部人员都…

CSS实现table表格:隔行换色的效果

表格是网页中十分重要的组成元素。表格用来存储数据&#xff0c;包含标题、表头、行和单元格。在HTML语言中&#xff0c;表格标记使用符号<table>表示。定义表格光使用<table>是不够的&#xff0c;还需要定义表格中的行、列、标题等内容。推荐博文&#xff1a;《HT…

LeetCode热题100刷题13:64. 最小路径和、62. 不同路径、5. 最长回文子串、1143. 最长公共子序列

64. 最小路径和 class Solution { public:int minPathSum(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();vector<vector<int>> dp(m,vector<int>(n,INT_MAX));dp[0][0]grid[0][0];if(m1 && n1)return grid…