一、概念
1、倒排索引
將文檔進行分詞,形成詞條和id的對應關係即爲反向索引。
ElasticSearch是一個基於Lucene的搜索服務器。
是一個分佈式、高擴展、高實時的搜索與數據分析引擎
•基於RESTful web接口
•Elasticsearch是用Java語言開發的,並作爲Apache許可條款下的開放源碼發佈,是一種流行的企業級搜索引擎
•官網:https://www.elastic.co/
應用場景
•搜索:海量數據的查詢
•日誌數據分析
•實時數據分析
以唐詩爲例,所處包含“前”的詩句
正向索引:由《靜夜思》-->窗前明月光--->“前”字
反向索引:“前”字-->窗前明月光-->《靜夜思》
反向索引的實現就是對詩句進行分詞,分成單個的詞,由詞推據,即爲反向索引
“牀前明月光”--> 分詞
將一段文本按照一定的規則,拆分爲不同的詞條(term)
2、ES存儲和查詢的原理
index(索引):相當於mysql的庫
映射:相當於mysql 的表結構
document(文檔):相當於mysql的表中的數據
數據庫查詢存在的問題:
1. 性能低:使用模糊查詢,左邊有通配符,不會走索引,會全表掃描,性能低
2. 功能弱:如果以”華爲手機“作爲條件,查詢不出來數據
Es使用倒排索引,對title 進行分詞
二、ES的核心概念
索引(index)
ElasticSearch存儲數據的地方,可以理解成關係型數據庫中的數據庫概念。
映射(mapping)
mapping定義了每個字段的類型、字段所使用的分詞器等。相當於關係型數據庫中的表結構。
文檔(document)
Elasticsearch中的最小數據單元,常以json格式顯示。一個document相當於關係型數據庫中的一行數據。
倒排索引
一個倒排索引由文檔中所有不重複詞的列表構成,對於其中每個詞,對應一個包含它的文檔id列表。
類型(type)
一種type就像一類表。如用戶表、角色表等。在Elasticsearch7.X默認type爲_doc。
ES 7.x以後,將逐步移除type這個概念,現在的操作已經不再使用,默認_doc 。
三、ES的幾個操作