ES系列一 Elasticsearch 概述

2022-03-22 21:18:55 字數 2174 閱讀 6070

對於一般的公司,初期是沒有那麼多資料的,所以很多公司更傾向於使用傳統的資料庫:mysql;比如我們要查詢關鍵字「呀呀呀」,那麼查詢的方式大概就是:select * from table where field like 『%呀呀呀%』; 但是隨著業務發展,資料會不斷的膨脹,那麼問題就來了;mysql單錶查詢能力即便經過了優化,它的極限也就是400w左右的資料量。而且還會經常出現查詢超時的現象;

然後很多公司開始對資料庫進行橫向和縱向的擴容,開始進行資料庫表的「拆分」:橫向拆分和縱向拆分;但是即便這樣操作,仍然會出現很多問題,比如:

1、資料庫會出現單點故障問題,於是先天主從複製關係,於是增加了運維成本.

2、因為對錶的拆分,增加了後期維護的難度,同樣也是增加了運維成本.

3、即便做了大量的維護,但對於大資料的檢索操作,依然很慢,完全達不到期望值.

所以為了滿足需求:海量資料組合條件查詢 、毫秒級或者秒級返回資料,elasticsearch應運而生。

lucene實現全文檢索的流程:

索引流程:採集資料--->構建文件物件--->建立索引(將文件寫入索引庫)。

搜尋流程:建立查詢--->執行搜尋--->渲染搜尋結果。

成品與半成品的關係。lucene專注於搜尋底層的建設,而elasticsearch專注於企業應用。

比如:lucene相當於汽車引擎,而es相當於汽車。

檢索速度:當單純的對已有資料進行搜尋時,solr更快。

當實時建立索引時, solr會產生io阻塞,查詢效能較差, elasticsearch具有明顯的優勢。

隨著資料量的增加,solr的搜尋效率會變得更低,而elasticsearch卻沒有明顯的變化。

大型網際網路公司,實際生產環境測試,將搜尋引擎從solr轉到elasticsearch以後的平均查詢速度有了50倍的提公升。

總結:二者安裝都很簡單。

solr 利用 zookeeper 進行分布式管理,而elasticsearch 自身帶有分布式協調管理功能。

solr 支援更多格式的資料,比如json、xml、csv,而 elasticsearch 僅支援json檔案格式。

solr 官方提供的功能更多,而 elasticsearch 本身更注重於核心功能,高階功能多有第三方外掛程式提供

solr 在傳統的搜尋應用中表現好於 elasticsearch,但在處理實時搜尋應用時效率明顯低於 elasticsearch。

solr 是傳統搜尋應用的有力解決方案,但 elasticsearch更適用於新興的實時搜尋應用。

索引(index)

es將資料儲存於乙個或多個索引中,索引是具有類似特性的文件的集合。模擬傳統的關係型資料庫領域來說,索引相當於sql中的乙個資料庫,或者乙個資料儲存方案(schema)。索引由其名稱(必須為全小寫字元)進行標識,並通過引用此名稱完成文件的建立、搜尋、更新及刪除操作。乙個es集群中可以按需建立任意數目的索引。

型別(type)

文件(document)

文件是lucene索引和搜尋的原子單位,它是包含了乙個或多個域的容器,基於json格式進行表示。文件由乙個或多個域組成,每個域擁有乙個名字及乙個或多個值,有多個值的域通常稱為「多值域」。每個文件可以儲存不同的域集,但同一型別下的文件至應該有某種程度上的相似之處。

ES6系列 ES6簡介

2015年6月17日,ecmascript的第六個版本正式發布,該版本正式名稱為ecmascript 2015,但通常被稱為ecmascript 6或者es6。瀏覽器對es6的支援情況 es6主要應用於node.js,如果想用在瀏覽器中,就需要使用轉碼器 將es6 轉成es5 這意味著,可以用es6...

es父子結構查詢 ES 系列3 ES 檢索原理

索引原理 磁碟io與預讀 倒排索引 fst索引是加速資料查詢的重要手段,其核心原理是通過不斷的縮小想要獲取資料的範圍來篩選出最終想要的結果,同時把隨機的事件變成順序的事件。也就是說,有了這種索引機制,我們可以總是用同一種查詢方式來鎖定資料。磁碟io程式設計中非常高昂的操作,也是影響程式效能的重要因素...

ES6 學習系列一(let和const)

本系列部落格所寫的內容是自己在平時學習當中自己的一些總結,當做筆記和複習的作用,如果有 說得不對,歡迎多多指出,謝謝 廢話不多說 現在開始吧!let和const都可以被用做定義變數 和var相似 但也存在一些區別及新的特性,如下所示 一 let命令 用於宣告變數 1 由於js不存在塊級作用域,但是由...