[ES三周年]理解 ES 查詢機制

2023-03-09 12:20:04 來源:騰訊云

打印 放大 縮小


(相關資料圖)

為什么需要使用 ES 進行搜索

ES除了擁有索引上的優勢,最重要的還是數據的結構,這都是ES為什么效率高,會使用它的原因。

1,結構化數據 VS 非結構化數據

結構化數據:也稱作行數據,關系型數據庫進行存儲和管理,是由二維表結構來邏輯表達和實現(可以使用行、列來表現)的數據,嚴格地遵循數據格式與長度規范。非結構化數據:又可稱為全文數據,不定長或無固定格式,不適于由數據庫二維表來表現,包括所有格式的辦公文檔、XML、HTML、word文檔,郵件,各類報表、圖片和音頻、視頻信息等。

其他的不同之處還有:結構化數據往往占用的空間較小,占企業數據的 20% 左右,容易管理。非結構化數據通常占用更多的存儲空間,約占企業數據的 80% 左右,比較難以管理

結構化數據 VS 非結構化數據

2,結構化搜索 vs 全文搜索

結構化搜索:通常查詢具有固有結構的數據,答案要么是肯定的,要么是否定的(即便是類似正則匹配這樣的結構化搜索,正則表達式匹配數據也是確定的),數據要么屬于查詢結果集合,要么不屬于。全文搜索:通常查詢全文字段/文檔的所有內容,答案返回的是一系列可能的數據,數據有一定概率屬于結果集合。

到這里,為什么需要使用 ES 進行搜索的答案就很明確了:對于非結構化文本(比如評論內容),傳統的結構化搜索難以滿足需求,于是就會使用 ES 進行全文搜索。當然 ES 不僅可以進行全文搜索,也可以進行一部分的結構化搜索,更加擴大了他的應用范圍。對于數據量巨大的情景,有公司會使用 ES 代替傳統的 MySQL 管理數據。

ES 基本概念介紹

本小結主要是介紹 ES 的一些基本概念,目的是方便之前沒有了解過 ES 的同學可以理解這次分享所介紹的內容。

1,ES 存儲模型

ES 在設計存儲模型時,考慮了大家從關系型數據庫轉換肯能帶來的困難,于是設計了 Index、Type、Document、Field 分別于對應傳統關系型數據庫(比如 MySQL) 的 Database、Table、Row、Column。注意: ES 存儲時,并沒有 Type 的概念,同一個Index 里的 Type 會拍平存儲,只是方便理解才會對使用者提供這樣一個抽象。由于Type 的存在會帶來一些問題,在后續的版本里會逐步移除。

ES和SQL Database的對比

2,ES 與 Lucene

ES 底層基于 Lucene 開發,Lucene作為其核心來實現索引搜索的功能。我們雖然講的是 ES,但很大一部分內容是 Lucene 的實現。?

關鍵詞:

責任編輯:ERM523

相關閱讀

亚洲精品欧美精品,亚洲人成在线影院,亚洲电影欧美电影有声小说,麻豆九一精品爱看视频在线观看免费
>