【Lucene/Elasticsearch】 数据类型(ES 字段类型) | 底层索引结构

在 Lucene/Elasticsearch 中,**BKD 树只负责“多维数值”字段**。其余类型仍走传统的 **倒排索引** 或专用格式:

| 数据类型(ES 字段类型) | 底层索引结构 | 说明 |
|---|---|---|
| `text`、`keyword`(字符串) | **倒排索引 + 正排 doc values** | 分词或不分词的倒排列表 |
| `boolean` | **倒排索引**(T/F 两个 term) | 简单布尔过滤 |
| `binary` | **DocValues(行存)** | 原始字节,仅存储/检索,不索引 |
| `object`、`nested`、`flattened` | **子字段递归索引** | 内部仍是倒排/BKD 组合 |
| `range`(整数/日期/浮点范围) | **BKD 树** | 虽然类型叫 range,底层仍存成“低维 BKD 点” |
| `token_count` | **倒排索引** | 实际上是对字符串计数后存数值 |
| `completion`、`search_as_you_type` | **专用 FST** | 用于前缀/补全,不走倒排 |

一句话总结:  
**除了字符串、布尔、二进制等“非数值/非地理/非向量”字段,其余多维数值类(含 range)默认都走 BKD;其余走倒排或专用结构。**

词典之上再建 FST(Finite State Transducer) 二级索引,压缩前缀后缀,实现毫秒级前缀/模糊查询 先查哪个索引呢?

查询顺序是 **先查 FST,再查倒排表**:

1. **FST 二级索引**(内存常驻)  
• 先根据用户输入的前缀或模糊模式,在 **FST** 里快速定位到 **所有候选 term** 的起止位置。  
• FST 只占用词典前/后缀压缩后的字节数组,**毫秒级**就能拿到候选 term 列表。

2. **倒排表(Postings)**  
• 拿到候选 term 后,再跳到 **倒排索引** 的相应偏移量,读出每个 term 的文档号列表、位置等信息。  
• 这一步是磁盘或 mmap 读取,**条数多时可能涉及顺序扫描**。

---

### ✅ 一句话总结  
> **前缀/模糊查询时,先通过内存里的 FST 秒级筛出候选词,再去倒排表里取真正的文档集合。**

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

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

相关文章

原型、原型对象

通俗理解:“类的原型对象就是一块区域里有这个类的实例对象通用的属性和方法”​这就是 JavaScript 中原型(prototype)的核心作用和设计理念。​​​​“一块区域” 原型对象本身(如 String.prototype, Array.prototype, MyClass…

STM32 IIC通信(寄存器与hal库实现)

一、IIC基础知识 1. 串口通信与IIC通信串口通信通常需要至少三条线(TX、RX和GND),而 I2C 总线仅需要两条信号线(SDA和SCL);串口通信仅支持一对一通信,而 I2C 总线支持多机通信,允许单…

宝塔 php支持sqlserver

PDOException: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server.错误原因这是 PHP 试图连接 SQL Server 数据库,但缺少必要的 ODBC 驱动支持 导致的。具体来说:你使用的是 PDO_SQLS…

day02-数组part02

一、长度最小的子数组(滑动窗口) leetcode 209 长度最小子数组 这道题的核心思想就是使用滑动窗口,滑动窗口三板斧: 初始位置i滑动窗口长度j-i1结束位置j 我们在写代码时是通过for循环来控制结束位置j,而初始位置i…

天爱验证码深度解析:从原理到实战,构建 Web 安全新防线

在网络安全日益严峻的当下,验证码作为抵御自动化攻击的重要屏障,其性能与可靠性直接关系到系统的安全稳定。天爱验证码(TIANAI CAPTCHA)作为国内优秀的开源行为验证码解决方案,凭借独特的技术优势,在电商、…

软考(软件设计师)软件工程-软件质量,软件测试,McCabe圈复杂度

软件质量 ISO/IEC 9126 是软件工程领域的经典质量模型,于1991年首次发布,2001年更新后成为软件产品质量评估的国际标准。其核心贡献是将抽象的“质量”概念分解为可度量、可管理的特性体系。以下是深度解析(2023年行业实践视角)&a…

CentOS7环境安装包部署并配置MySQL5.7

卸载MySQL卸载MySQL5.71、关闭MySQL5.7服务service mysqld stop2、查看MySQL安装rpm -qa|grep -i mysqlmysql-community-libs-5.7.35-1.el7.x86_64mysql-community-libs-compat-5.7.35-1.el7.x86_64mysql-community-common-5.7.35-1.el7.x86_64mysql57-community-release-el7-1…

1-Git安装配置与远程仓库使用

Git安装配置与远程仓库使用 1. Git 下载与安装 ① 进入Git 官网 https://git-scm.com/ ② 选择合适系统版本下载,本文以windows为例进行下载 当前最新版本为 2.50.1 ,浏览器默认下载很慢,用迅雷比较快 ③ 安装Git 我安装在D盘 等待完…

开源“具身大脑” 实现不同机器人群体协作-RoboBrain

开源“具身大脑” 实现不同机器人群体协作-RoboBrain 具身大小脑协作框架RoboOS与开源具身大脑RoboBrain,实现跨场景多任务轻量化快速部署与跨本体协作,推动单机智能迈向群体智能,为构建具身智能开源统一生态加速场景应用提供底层技术支持。支…

【笔记】训练步骤代码解析

目录 config参数配置 setup_dirs创建训练文件夹 load_data加载数据 build_model创建模型 train训练 记录一下训练代码中不理解的地方 config参数配置 config {data_root: r"D:\project\megnetometer\datasets\WISDM_ar_latest\organized_dataset",train_dir: t…

Java填充Word模板

文章目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码实体类工具类三、测试四、运行结果五、注意事项前言 最近有个Java填充Word模板的需求,包括文本,列表和复选框勾选,写一个工具类,以此…

【MYSQL8】springboot项目,开启ssl证书安全连接

文章目录一、开启ssl证书1、msysql部署时默认开启ssl证书2、配置文件3、创建用户并指定ssl二、添加Java信任库1、使用 keytool 导入证书2、验证证书是否已导入三、修改连接配置一、开启ssl证书 1、msysql部署时默认开启ssl证书 可通过命令查看: SHOW VARIABLES L…

Telegraf vs. Logstash:实时数据处理架构中的关键组件对比

在现代数据基础设施中,Telegraf 和 Logstash 是两种广泛使用的开源数据收集与处理工具,但它们在设计目标、应用场景和架构角色上存在显著差异。本文将从实时数据处理架构、时序数据库集成、消息代理支持等方面对比两者的核心功能,并结合实际应…

Vue Vue-route (4)

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue-route 编程式导航和几种路由 目录 编程式导航 详情组件 创建组件 设置路由 电影列表 传参 另一种方式 动态路由 命名路由 别名 总结 编程式导航 点击电影列表 跳转电影详情 详情组件 创建组件 在views中创…

存在两个cuda环境,在conda中切换到另一个

进入 openmmlab 环境 conda activate openmmlab 设置环境变量为 CUDA 12.4(只影响当前 shell 会话) export PATH/usr/local/cuda-12.4/bin:PATHexportLDLIBRARYPATH/usr/local/cuda−12.4/lib64:PATH export LD_LIBRARY_PATH/usr/local/cuda-12.4/lib64:…

Django 视图(View)

1. 视图简介 视图负责接收 web 请求并返回 web 响应。视图就是一个 python 函数,被定义在 views.py 中。响应可以是一张网页的 HTML 内容、一个重定向、一个 404 错误等等。响应处理过程如下图: 用户在浏览器中输入网址:www.demo.com/1/100Django 获取网址信息,去除域名和端…

HarmonyOS基础概念

一、OpenHarmony、HarmonyOS和Harmony NEXT区别OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,开放原子开源基金会由华为、阿里、腾讯、百度、浪潮、招商银行、360等十家互联网企业共同发起组建。目标是面向全…

spark3 streaming 读kafka写es

1. 代码 package data_import import org.apache.spark.sql.{DataFrame, Row, SparkSession, SaveMode} import org.apache.spark.sql.types.{ArrayType, DoubleType, LongType, StringType, StructField, StructType, TimestampType} import org.apache.spark.sql.functions._…

【跟着PMP学习项目管理】每日一练 - 3

1、你是一个建筑项目的项目经理。电工已经开始铺设路线,此时客户带着一个变更请求来找你。他需要增加插座,你认为这会增加相关工作的成本。你要做的第一件事? A、拒绝做出变更,因为这会增加项目的成本并超出预算 B、参考项目管理计划,查看是否应当处理这个变更 C、查阅…

CentOS 安装 JDK+ NGINX+ Tomcat + Redis + MySQL搭建项目环境

目录第一步:安装JDK 1.8方法 1:安装 Oracle JDK 1.8方法 2:安装 OpenJDK 1.8第二步:使用yum安装NGINX第三步:安装Tomcat第四步:安装Redis第五步:安装MySQL第六步:MySQL版本兼容性问题…