【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
英文地址,請注明出處:http://en.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版本兼容性問題…