近实时”(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 在海量数据的场景下既能高效写入,又能快速检索。

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

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

相关文章

【NACOS插件】使用官网插件更换NACOS数据库

说明 nacos 2.3.1默认支持mysql和derby数据库,如果想要支持其他数据库,可以通过使用插件方式实现。对于该插件的使用,官方说明文档较为粗略(不过也没问题,实际上整个过程就是很简单,只是使用者想复杂了),网…

Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集FGSM介绍FGSM代码实现FGSM算法实现攻击效果 代码汇总fgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行分类 Pytorch | 从零构建Vgg…

【IC验证】verilog及systemverilog特殊特性的分析

verilog及systemverilog特殊特性的分析 1.概述2.赋值延迟(0)总结(1)情况一:initial中进行阻塞赋值和非阻塞赋值(不延迟)a代码b 电路图c 结果 (2)时钟a 代码b 电路图c 结果…

考前96天 学习巩固 计算机、数学、英语

2024年12月24日到2025年3月29日共有 96​ 天 一、计算机基础 回顾: 三大思维: 数学 推理/理论 物理 证实/实验 计算机 构造/计算 本质——》抽象/自动化 计算复杂性:空间复杂性、时间复杂性 计算机系统的组成: 1️⃣硬件…

如何用digital实现一个4位的减法器?

文件可以在下方链接下载: https://download.csdn.net/download/dashuchengtian/90178176 组件拼接如下图所示: 其中A和B是一个4位的输入,Cin表示有无借位,S表示和,Cout表示的是借位输出。 运行结果如下,以…

C++之“流”-第5课.三军联动:流 +操作符+函数重载

如何针对特定函数类型重载流输出操作符&#xff1f;这样做有什么用处&#xff1f;C语言中&#xff0c;“流”、“操作符”、“函数重载” 这三大军团如何配合作战&#xff1f; 前言 C中&#xff0c;“流” 的日常运用&#xff0c;最基本的就是在你的代码里使用 << 和 &g…

并发编程(19)——引用计数型无锁栈

文章目录 十九、day191. 引用计数2. 代码实现2.1 单引用计数器无锁栈2.2 双引用计数器无锁栈 3. 本节的一些理解 十九、day19 上一节我们学习通过侯删链表以及风险指针与侯删链表的组合两种方式实现了并发无锁栈&#xff0c;但是这两种方式有以下缺点&#xff1a; 第一种方式…

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中&#xff0c;轮播图是一种常见的用户界面元素&#xff0c;用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现&#xff0c;详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先&#xff0c;在home.js文件中&a…

tortoisegit推送失败

tortoisegit推送失败 git.exe push --progress -- "origin" testLidar:testLidar /usr/bin/bash: gitgithub.com: No such file or directory fatal: Could not read from remote repository. Please make sure you have the correct access rights and the reposit…

WebGIS实战开源项目:智慧机场三维可视化(学习笔记)

From&#xff1a;新中地 1.简介 智慧机场解决方案&#xff0c;基于数字化大平台&#xff0c;融合AI、大数据、IoT、视频云、云计算等技术&#xff0c;围绕机场“运控、安防、服务”三大业务领域&#xff0c;构建“出行一张脸”及“运行一张图”两大场景化解决方案。 https://…

C++----类与对象(下篇)

再谈构造函数 回顾函数体内赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class Date{ public: Date(int year, int month, int day) { _year year; _month month; _day day; } private: int _year; int _mo…

重装系统后的那点事儿

每次重装系统完&#xff0c;总是有这有那的问题&#xff0c;比如这几个常见问题&#xff0c;各种C盘的数据最好在重装系统前备份哦&#xff0c;不然有点小麻烦&#xff0c;要下载好多东西&#xff01;&#xff01; 文章目录 需要新应用打开此 ms-paint新链接搜索框不见了 需要…

ROS2中通过launch读取.yaml配置文件启动节点

环境&#xff1a;Ubuntu22.04&#xff0c;ROS2-humble 通过修改.yaml配置文件中的参数&#xff0c;可以不用重新编译源代码进行软件调试。 1.yaml文件格式 bag_to_image_node&#xff1a;运行的ROS2节点名称 参数格式参考如下&#xff1a; bag_to_image_node:ros__parameters…

链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 场景

在 12 月 4 日&#xff0c;链原生的 Web3 AI 数据网络 Chainbase 正式启动了 Chainbase AVS 主网&#xff0c;同时发布了首批 20 个 AVS 节点运营商名单。Chainbase AVS 是 EigenLayer AVS 中首个以数据智能为应用导向的主网 AVS&#xff0c;其采用四层网络架构&#xff0c;其中…

【文档搜索引擎】搜索模块的完整实现

调用索引模块&#xff0c;来完成搜索的核心过程 主要步骤 简化版本的逻辑&#xff1a; 分词&#xff1a;针对用户输入的查询词进行分词&#xff08;用户输入的查询词&#xff0c;可能不是一个词&#xff0c;而是一句话&#xff09;触发&#xff1a;拿着每个分词结果&#xf…

MySQL 数据库优化详解【Java数据库调优】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

ensp 关于acl的运用和讲解

ACL&#xff08;Access Control List&#xff0c;访问控制列表&#xff09;是一种常用于网络设备&#xff08;如路由器、交换机&#xff09;上的安全机制&#xff0c;用于控制数据包的流动与访问权限。ACL 可以指定哪些数据包允许进入或离开某个网络接口&#xff0c;基于不同的…

突围边缘:OpenAI开源实时嵌入式API,AI触角延伸至微观世界

当OpenAI宣布开源其名为openai-realtime-embedded-sdk的实时嵌入式API时&#xff0c;整个科技界都为之震惊。这一举动意味着&#xff0c;曾经遥不可及的强大AI能力&#xff0c;如今可以被嵌入到像ESP32这样的微型控制器中&#xff0c;真正地将AI的触角延伸到了物联网和边缘计算…

知识中台与人工智能:融合赋能企业智能化知识服务与决策

在数字化、智能化的时代背景下&#xff0c;企业面临着前所未有的机遇与挑战。为了提升知识管理与服务的能力&#xff0c;推动企业的智能化转型与发展&#xff0c;知识中台与人工智能的融合应用正成为新的趋势。知识中台作为连接数据、知识与业务的核心平台&#xff0c;能够为企…

《Web 项目开发之旅》

一、项目简介 介绍项目的背景与目标&#xff0c;说明为什么要开展这个 Web 项目。展示项目最终完成后的整体页面截图&#xff0c;让读者对项目外观有初步印象。 二、技术选型 阐述在项目中使用的前端技术&#xff08;如 HTML、CSS、JavaScript 框架等&#xff09;、后端技术…