ElasticSearch所使用的倒排索引的思想和使用場景
背景:
在關聯式資料庫系統裡,索引是檢索資料最有效率的方式,。但對於搜尋引擎,它並不能滿足其特殊要求:
1)海量資料:搜尋引擎面對的是海量資料,像Google,百度這樣大型的商業搜尋引擎索引都是億級甚至百億級的網頁數量 ,面對如此海量資料 ,使得資料庫系統很難有效的管理。
2)資料操作簡單:搜尋引擎使用的資料操作簡單 ,一般而言 ,只需要增、 刪、 改、 查幾個功能 ,而且資料都有特定的格式 ,可以針對這些應用設計出簡單高效的應用程式。而一般的資料庫系統則支援大而全的功能 ,同時損失了速度和空間。最後 ,搜尋引擎面臨大量的使用者檢索需求 ,這要求搜尋引擎在檢索程式的設計上要分秒必爭 ,儘可能的將大運算量的工作在索引建立時完成 ,使檢索運算儘量的少。一般的資料庫系統很難承受如此大量的使用者請求 ,而且在檢索響應時間和檢索併發度上都不及我們專門設計的索引系統
何為倒排索引?
常見的正常索引
假設我們要通過id去查詢content,我們會將ID做成索引,加快我們的查詢
現在的問題是我們要去查到那些content中有b這兩個詞
首先想到的是依次去嘗試content中是否有b,顯然在時間複雜度上是很大的,尤其是資料庫中數量很多時
那麼如何去解決這個問題?
現在都需要引入倒排索引的思想
我們已content做成索引,這樣查詢ID的時間就快很多
跟正向的索引比較,也就是做了一個倒置,這就是倒排索引的思想
倒序索引定義:
也常被稱為反向索引、置入檔案或反向檔案,是一種索引方法,被用來儲存在全文搜尋下某個單詞在一個文件或者一組文件中的儲存位置的對映
那麼使用場景有哪些?
1、全文搜尋(搜尋引擎)
在一組文件中查詢某一單詞所在文件及位置
2、模糊匹配
通過使用者的輸入去匹配詞庫中符合條件的詞條
3、商品搜尋
通過商品的關鍵字去資料來源中查詢符合條件的商品
相關文章
- MySQL和Elasticsearch使用場景MySqlElasticsearch
- ElasticSearch 倒排索引(Inverted Index)| 什麼是倒排索引?Elasticsearch索引Index
- 使用Elasticsearch的動態索引和索引優化Elasticsearch索引優化
- 大量索引場景下 Easysearch 和 Elasticsearch 的吞吐量差異索引Elasticsearch
- mongodb 使用場景和不使用場景MongoDB
- 《Elasticsearch技術解析與實戰》Chapter 1.1:Elasticsearch入門和倒排索引ElasticsearchAPT索引
- Elasticsearch 6.x 倒排索引與分詞Elasticsearch索引分詞
- 六十四、Elasticsearch核心原理-再談倒排索引Elasticsearch索引
- 本地索引和全域性索引的適用場景索引
- phoenix全域性索引和本地索引 概述,使用場景,區別等詳解索引
- DoorDash如何使用 Apache Kafka 和 Elasticsearch 構建更快的索引?ApacheKafkaElasticsearch索引
- Map的使用場景
- grep 的使用場景
- 描述下你所瞭解的圖片格式及使用場景
- useCallback 和 useMemo 使用場景
- 典型的ETL使用場景
- 面試中的 ThreadLocal 原理和使用場景面試thread
- sql中in和exists的原理及使用場景。SQL
- Hbase原理的介紹和使用場景分析
- Java中的引用型別和使用場景Java型別
- 什麼是行儲存和列儲存?正排索引和倒排索引?MySQL既不是倒排索引,也索引MySql
- retention guarantee使用場景和作用
- 典型使用者和場景
- Elasticsearch 中為什麼選擇倒排索引而不選擇 B 樹索引Elasticsearch索引
- JUC之CountDownLatch的原始碼和使用場景分析CountDownLatch原始碼
- margin和padding使用的場景有哪些?padding
- ThreadLocal的使用場景分析thread
- Redis最常用的使用場景Redis
- MQ 常見的使用場景MQ
- Redis 中 BitMap 的使用場景Redis
- Context的典型使用場景Context
- iframe的使用場景有哪些?
- 【索引】oracle查詢使用索引和不使用索引的比較索引Oracle
- ThreadLocal 原理和使用場景分析thread
- MySQL資料SQL優化中,索引不被使用的典型場景總結MySql優化索引
- 資料庫的連線、索引和Redis的五種資料型別及其操作命令、使用場景資料庫索引Redis資料型別
- 索引失效場景索引
- 關於Ajax和websocket的區別以及使用場景!Web