elasticsearch學習
1.ES是 什麼?
es是一個基於Lucene的搜索服務器,是一個基於分佈式多用戶能力的全文搜索引擎,基於restful web接口。
大白話:是一個分佈式、高性能、高可用、可伸縮的搜索和分析系統。
2.ES的功能?
- 此種場景不支持包含頻繁更新、事務(transaction)的操作。
a.分佈式的搜索引擎和數據分析引擎
b.全文檢索,結構化檢索,數據分析
c.對海量數據進行近實時的處理。
d.elasticsearch作爲傳統數據庫的一個補充,比如全文檢索,同義詞處理,相關度排名(如熱度),複雜數據分析。
-
簡單點來說就是:
查詢快並且可以複雜模糊查詢等 , 數據分析, 速度快, 可擴展性, 靈活性。
3.ES和我們常用的數據庫有什麼不同呢?
1.響應時間非常快(PB級數據是毫秒反應)
- 在大數據相似的計算與查找或簡單計算時,es的分佈式並行計算有絕對優勢。
- 在某一個唯一的值(如:用會員id找會員)這是用mysql好一點。
2.分詞(倒排索引)
- 倒排索引建立的是分詞(Trem)和文檔(Document)之間的映射關係,在倒排索引中,數據是面向詞的(Term)而不是面向文檔的。
- 倒排索引-----查詢過程
查詢包含“搜索引擎”的文檔
1.通過倒排序獲得“搜索引擎”對應的文檔id列表,有1,3
2.通過正排序索引查詢1和3的完整內容。
3.返回做種結果。
4.遍歷方式
- ES有分片的概念,一個大的索引會被分成多個分片進行存儲數據,使用分佈式的架構對分片進行並行搜索(基於倒排)
- 傳統數據庫遍歷,屬於正向全表掃描。
ES沒有事務的概念,不支持回滾,無法恢復刪除數據。
Relational DB -> Databases -> Tables -> Rows -> Columns
關係型數據庫 數據庫 表 行 列 Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch 索引(indexName) 類型 (type) 文檔 域(字段)
4.ES的使用場景?
1.記錄和日誌分析
Logstash是一個開源的服務器端數據處理管道,支持各種輸入選擇,可以在同一時間從多常用來源捕捉事件,可以同時從多個數據源獲取數據,並對其進行轉換,發到我們常用ES中。
2.採集和組合公共數據
與日誌數據一樣,Elastic Stack擁有大象工具,可以輕鬆抓取和索引遠程數據。
3.全文檢索
4.事件數據和指標
ES可以很好的處理時間序列數據,如指標和應用程序事件。
5.數據可視化
elasticsearch都有常用查詢。
- matchQuery(null,null)基本匹配查詢(分詞查詢) 不支持通配符,
- multiQuery多個document field查詢,
- FuzzyQuery模糊查詢
- boolQuery組合查詢,and , not ,or 。
- termQuery 精確查詢 (一個參數是,完全匹配),(多個參數,是批量匹配)
- boostingQuery
- functionScoreQuery 權重分查詢
- spanNearQuery跨度查詢
- nestedQuery嵌套查詢