ElasticSearch part1
1、數據庫搜索
模糊匹配(like %str% )
- 數據多時,每條都要進行匹配,搜索效率低
- 可能還匹配不到想要的結果,例如想要搜索str1str2,不能搜索出數據庫中對應的str1str3str2
2、全文檢索 & 倒排索引
把所有詞條全部拆成關鍵詞,構成倒排索引,搜索時到倒排索引裏面檢索,就是全文索引
Lucene封裝好了建立倒排索引和搜索的各種算法
3、ES基本概念&特點
基於Java的開源搜索引擎,建立在Apache Lucene基礎上(hin厲害的搜索引擎庫)
官網定義:
- 一個分佈式的實時文檔存儲,每個字段可以被索引與搜索
- 一個分佈式實時分析搜索引擎
- 能勝任上百個服務節點的擴展,並支持 PB 級別的結構化或者非結構化數據
特性:分佈式,搜索引擎,數據分析,PB級,RESTful API
- es = 全文檢索 + 數據分析 + 分佈式技術
- 對用戶來說(中小型企業)開箱即用
- 作爲傳統數據庫的補充
4、ES核心概念
Near RealTime(近實時)—— 就是很快啦,從寫入數據到數據可以被搜索有小延遲(1s),搜索和分析秒級
Node(節點)—— 一個運行的es進程
Cluster(集羣)——包含多個或一個Node
Document——es裏面最小的單元,一條數據
Index——包含多個或一個相同或相似Document
Type——允許一個索引中存放不同類型的文檔,可以類比爲表(字段不同)
shard——index可以被拆分成多個shard,放在不同的服務器上(橫向擴展,提高吞吐量和性能)
replica(shard)——shard副本,如果某個節點宕機,避免數據丟失(高可用性,提升搜索的吞吐量)
replica是shard的副本,也是shard,es要求replica和shard不在一個節點上
ElasticSearch | 數據庫 |
---|---|
Ducument | 行 |
Type | 表 |
Index | 庫 |