(相關(guān)資料圖)
ES除了擁有索引上的優(yōu)勢,最重要的還是數(shù)據(jù)的結(jié)構(gòu),這都是ES為什么效率高,會使用它的原因。
1,結(jié)構(gòu)化數(shù)據(jù) VS 非結(jié)構(gòu)化數(shù)據(jù)
結(jié)構(gòu)化數(shù)據(jù):也稱作行數(shù)據(jù),關(guān)系型數(shù)據(jù)庫進行存儲和管理,是由二維表結(jié)構(gòu)來邏輯表達(dá)和實現(xiàn)(可以使用行、列來表現(xiàn))的數(shù)據(jù),嚴(yán)格地遵循數(shù)據(jù)格式與長度規(guī)范。非結(jié)構(gòu)化數(shù)據(jù):又可稱為全文數(shù)據(jù),不定長或無固定格式,不適于由數(shù)據(jù)庫二維表來表現(xiàn),包括所有格式的辦公文檔、XML、HTML、word文檔,郵件,各類報表、圖片和音頻、視頻信息等。其他的不同之處還有:結(jié)構(gòu)化數(shù)據(jù)往往占用的空間較小,占企業(yè)數(shù)據(jù)的 20% 左右,容易管理。非結(jié)構(gòu)化數(shù)據(jù)通常占用更多的存儲空間,約占企業(yè)數(shù)據(jù)的 80% 左右,比較難以管理
到這里,為什么需要使用 ES 進行搜索的答案就很明確了:對于非結(jié)構(gòu)化文本(比如評論內(nèi)容),傳統(tǒng)的結(jié)構(gòu)化搜索難以滿足需求,于是就會使用 ES 進行全文搜索。當(dāng)然 ES 不僅可以進行全文搜索,也可以進行一部分的結(jié)構(gòu)化搜索,更加擴大了他的應(yīng)用范圍。對于數(shù)據(jù)量巨大的情景,有公司會使用 ES 代替?zhèn)鹘y(tǒng)的 MySQL 管理數(shù)據(jù)。
本小結(jié)主要是介紹 ES 的一些基本概念,目的是方便之前沒有了解過 ES 的同學(xué)可以理解這次分享所介紹的內(nèi)容。
ES 在設(shè)計存儲模型時,考慮了大家從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)換肯能帶來的困難,于是設(shè)計了 Index、Type、Document、Field 分別于對應(yīng)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(比如 MySQL) 的 Database、Table、Row、Column。注意: ES 存儲時,并沒有 Type 的概念,同一個Index 里的 Type 會拍平存儲,只是方便理解才會對使用者提供這樣一個抽象。由于Type 的存在會帶來一些問題,在后續(xù)的版本里會逐步移除。
ES 底層基于 Lucene 開發(fā),Lucene作為其核心來實現(xiàn)索引和搜索的功能。我們雖然講的是 ES,但很大一部分內(nèi)容是 Lucene 的實現(xiàn)。?
標(biāo)簽:
要聞