当前位置: 首页 > news >正文

近实时”(NRT)搜索、倒排索引

近实时(Near Real-Time, NRT)搜索

近实时(NRT)搜索是 Elasticsearch 的核心特性之一,指的是数据在被写入到系统后,可以几乎立即被搜索和查询到。虽然它不像传统数据库那样完全实时,但它的延迟通常只在几百毫秒到一秒之间。

工作原理:
  1. 写入数据:
    • 文档写入时被存储在内存缓冲区(translog)。
  2. 刷新(Refresh):
    • Elasticsearch 定期将内存中的数据刷新(默认每秒一次),将新数据写入一个称为“段”(segment)的文件中。
    • 刷新后,新数据对搜索可见。
  3. 延迟原因:
    • 数据写入并非直接可搜索,而是需要等刷新完成,这导致搜索是“近实时”。

在这里插入图片描述

适用场景:
  • 日志搜索: 需要快速查询最新日志数据。
  • 实时分析: 对流式数据进行快速分析,例如异常检测。
优化方法:
  • 调整 refresh_interval
    • 默认值为 1 秒。
    • 如果不需要实时性,可以延长刷新时间以提高写入性能。
    • 示例:将索引的刷新间隔设置为 5 秒:
      PUT /my_index/_settings
      {"index": {"refresh_interval": "5s"}
      }
      

倒排索引(Inverted Index)

倒排索引是 Elasticsearch 用来实现快速全文搜索的核心数据结构。

什么是倒排索引?

倒排索引是一种映射结构,它记录了词项(Term)与包含这些词项的文档 ID之间的关系。
与传统的正排索引(如关系型数据库的 B-Tree)不同,倒排索引更加适合快速查找包含特定关键词的文档。

倒排索引的结构:

以“倒排”表示其映射方向:

示例文档集:

Doc1: Elasticsearch is a search engine.
Doc2: Elasticsearch is fast and scalable.
Doc3: Full-text search uses inverted index.

倒排索引:

词项 (Term)文档 (Document IDs)
aDoc1, Doc2
ElasticsearchDoc1, Doc2
engineDoc1
fastDoc2
full-textDoc3
invertedDoc3
scalableDoc2
searchDoc1, Doc3
usesDoc3
构建倒排索引的步骤:
  1. 分词(Tokenization):
    • 文本被分解为词项。例如 Elasticsearch is a search engine 被分成:[Elasticsearch, is, a, search, engine]
  2. 去停用词(Stop Words):
    • 移除无意义的词汇(如 “is”, “a” 等)。
  3. 词项映射:
    • 记录每个词项出现在哪些文档中。
优点:
  • 快速全文检索: 可以高效找到包含某个或某些关键词的文档。
  • 灵活性: 支持复杂查询,比如布尔查询、短语匹配、模糊搜索等。
在 Elasticsearch 中的实现:
  • 每个字段都会创建一个倒排索引。
  • 支持分词器(Analyzer)对文本进行预处理,例如小写化、同义词扩展。
适用场景:
  • 文本内容检索,如日志分析、电子商务搜索、知识库搜索。

NRT 搜索与倒排索引的结合:

  • 倒排索引提供了快速查询的核心能力。
  • NRT 搜索通过频繁刷新倒排索引,使得新数据能够快速加入搜索结果,从而实现“近实时”的体验。

这种结合使得 Elasticsearch 在海量数据的场景下既能高效写入,又能快速检索。

相关文章:

近实时”(NRT)搜索、倒排索引

近实时(Near Real-Time, NRT)搜索 近实时(NRT)搜索是 Elasticsearch 的核心特性之一,指的是数据在被写入到系统后,可以几乎立即被搜索和查询到。虽然它不像传统数据库那样完全实时,但它的延迟通…...

Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败(已成功)>

一、安装openMVS 参考官方文档 sudo apt-get -y install git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev eigen git clone https://gitlab.com/libeigen/eigen --branch 3.4 mkdir eigen_build cd eigen_build &&\cmake . ../eigen -…...

从测试服务器手动热部署到生产环境的实现

为了实现从测试服务器(192.168.0.255)手动热部署到生产环境(172.168.20.100),可以采用多种方法。以下是详细的步骤和最佳实践,帮助你实现这一目标。 1. 准备生产环境 确保生产环境上的 Docker 和 Docker …...

【c++高阶DS】图

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 目录 01.并查集02.图的介绍03.图的存储结构03.1.邻接矩阵03.2.邻接表03.3.矩阵版本代码实现03.4.邻接表版本代码实现 完整代码: 01.并查集 在一些应用问题中,需要将…...

React第十八节 useEffect 用法使用技巧注意事项详解

1、概述 useEffect 是React中一个用于 将组件与外部系统同步的 Hook;在函数式组件中处理副作用函数的 Hook,用于替代类式组件中的生命周期函数; 可以在副作用函数中 实现以下操作: a、请求接口,获取后台提供数据 b、操…...

C++ 指针基础:开启内存操控之门

1. 指针为何如此重要 在 C 编程领域,指针堪称一项极为关键的特性。它赋予了程序员直接访问和操控内存的能力,这使得程序在处理复杂数据结构与优化性能时具有更高的灵活性。想象一下,在编写大型程序时,高效地管理内存资源是多么重要…...

Nginx的stream模块代理四层协议TCP的流量转发

Nginx的stream模块是一个功能强大的工具,专门用于处理四层协议(即网络层和传输层,如TCP和UDP)的流量。以下是对Nginx stream模块的详细解析: 一、基本功能 Nginx的stream模块主要用于实现TCP和UDP数据流的代理、转发…...

UE5 渲染管线 学习笔记

兰伯特 SSS为散射的意思 带Bias的可以根据距离自动切换mip的卷积值 而带Level的值mipmaps的定值 #define A8_SAMPLE_MASK .a 这样应该就很好理解了 这个只采样a通道 带Level的参考上面的 朝左上和右下进行模糊 带Bias参考上面 随机数 4D 3D 2D 1D...

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库,实时绘制图表详解一、引言二、步骤一:环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二:数据获取与处理1、查询数据库2、数据处理 四、步骤三:ECharts图表配置与渲染1、配置ECharts选项2、动…...

Electron 学习笔记

目录 一、安装和启动electron 1. 官网链接 2. 根据文档在控制台输入 3. 打包必填 4. 安装electron开发依赖 5. 在开发的情况下打开应用 6. 修改main为main.js,然后创建main.js 7.启动 二、启动一个窗口 1. main.js 2. index.html 3. 隐藏菜单栏 三、其他…...

Debian 12 安装配置 fail2ban 保护 SSH 访问

背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…...

http反向代理

通过反向代理实现访问biying,目前访问一些网站需要绕过cloudfare还没有解决,代码如下: from fastapi import FastAPI, Request from fastapi.responses import StreamingResponse import httpx import uvicorn import logging# 设置日志 logging.basicConfig(level=logging.…...

java12.24日记

运算符: 算术运算符: 顾名思义进行算数运算的 多为:四则运算,加一个取余 ,-,*,/以及 %(取余) 而外的:自增 以及自减--,对原数进行1或者-1 i…...

vue中proxy代理配置(测试一)

接口地址:http://jsonplaceholder.typicode.com/posts 1、配置一(代理没起作用) (1)设置baseURL为http://jsonplaceholder.typicode.com (2)proxy为 ‘/api’:’ ’ (3&a…...

[OpenGL]使用TransformFeedback实现粒子效果

一、简介 本文介绍了如何使用 OpenGL 中的 Transform Feedback 实现粒子效果,最终可以实现下图的效果: 本文的粒子系统实现参考了modern-opengl-tutorial, ogldev-tutorial28 和 粒子系统–喷泉 [OpenGL-Transformfeedback]。 二、使用 TransformFeed…...

GitCode 光引计划投稿 | GoIoT:开源分布式物联网开发平台

GoIoT 是基于Gin 的开源分布式物联网(IoT)开发平台,用于快速开发,部署物联设备接入项目,是一套涵盖数据生产、数据使用和数据展示的解决方案。 GoIoT 开发平台,它是一个企业级物联网平台解决方案&#xff…...

用 gdbserver 调试 arm-linux 上的 AWTK 应用程序

很多嵌入式 linux 开发者都能熟练的使用 gdb/lldb 调试应用程序,但是还有不少朋友在调试开发板上的程序时,仍然在使用原始的 printf。本文介绍一下使用 gdbserver 通过网络调试开发板上的 AWTK 应用程序的方法,供有需要的朋友参考。 1. 下载 …...

攻防世界web第一题

最近开始学习网络安全的相关知识,开启刷题,当前第一题 题目为攻防世界web新手题 这是题目 翻译:在这个训练挑战中,您将了解 Robots_exclusion_standard。网络爬虫使用 robots.txt 文件来检查是否允许它们对您的网站或仅网站的一部…...

轮播图带详情插件,插件

超级好用的轮播图 介绍访问地址参数介绍使用方法(简单使用,参数结构点击链接查看详情)图片展示 介绍 video(15) 带有底部物品介绍以及价格的轮播图组件,持续维护,uniApp插件,直接下载填充数据就可以在项目里…...

gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接

gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接 题目描述 一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如, aabaa \texttt{aabaa} aabaa 和...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...