日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch 简介,概念和集成

發布時間:2024/4/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch 简介,概念和集成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ES之前也有講過了,它是一款高度可擴展的開源全文搜索和分析引擎,他不單單是一個搜索,他還提供一些分析功能,搜索和分析的一個引擎,然后可以快速的,實時的對大數據進行存儲,搜索,和分析,所以在我們這個大數據時代,ES剛好就有了用武之地,然后可以用來支撐有復雜的數據搜索需求的企業級應用,在文章多起來之后,我們要進行搜索的話,顯然我們需要一款全文搜索的引擎,支持我們大數據的一個搜索

ES他有哪些特點呢,我們來做一下介紹,首先ES它是一款分布式的搜索引擎,他如何來實現分布式,他每個索引都使用分片,每個分片又可以有多個副本,在任何的一個副本分片上,來執行這個讀取,跟搜索操作,這是他分布式的一個特點,他的索引是分布的,這就是他分布式的一個特點,正是因為他分布式的特點,所以才造就了他高可用的一個特點,為什么說分布式他就有一個高可用呢,那么可以理解,假設我這個某一個系統,某一個系統它是非分布式的,單擊的系統,他只有一個主機,主機你不管多牛逼的一個主機,遲早都有奔潰的一天,不管什么原因,他某一天奔潰了,顯然在主機上的一個系統,他就不可用了,用不了了,那么分布式的話,他就是系統假設分布到了10臺機器上,我有10個主機組成了分布式系統,那么我任何的一臺主機,掛掉了,那么剩余的仍然可以提供服務,所以在一個分布式的系統里面,若干臺的主機奔潰了,他升級一下分布式系統的一個運作,所以他仍然是可用的,服務仍然是可用的,所以為什么說他是一個高可用的原因,然后ES他也支持多種數據類型,API他支持http的restful,我們也會用到restful的API的,他也支持原生的JAVA api,他還有一個特點是面向文檔的,不需要事先去定義一些模式,如果對nosql有了解的話,nosql是不需要事先定義一些模式的,他可以直接就創建這個文檔,每個類型都定義模式,自定義索引,然后異步導入,對于同步寫入來說,異步上性能會更高,所以寫入性能還是比較高的,然后他還有個特點是近實時,就是接近實時,他的搜索性能上還是非常高的,雖然他還沒有做到全實時,接近實時,為什么說它是近實時呢,我們在后面的介紹,ES它是基于Lucene,這個我們之前也講過,是基于Lucene,然后他還是開源協議,是遵循Apache的開源協議,ES他也是一款開源的產品,也是遵循Apache的開源協議,這些就是ES的特點

我們對ES的核心概念,來做一下介紹,首先這個概念在之前也講過,叫做近實時的一個概念,進實時就是接近實時,還不是真正的實時,他其實是從搜索文檔,和可搜索之間,有一個輕微的一個延遲,一般延時是在一秒左右,為什么會有這個延時呢,我們知道Lucene,他可以做到一個真實的實時的,可以做到實時的,但是如果要做到實時的話,要么就是犧牲索引的一個效率,為什么要犧牲索引的效率呢,因為每次搜索之后,我都要去刷新數據,犧牲查詢的效率,每次查詢之前都要進行刷新,折中的方案,去自動做一個刷新,這樣在創建索引之后,最多在N秒之內,就能夠查詢到,近實時的一個查詢,索引建立之后不會馬上寫入磁盤,而是存在文件系統中,根據刷新策略,定期的設置到磁盤中去,一般刷新的參數設置在一秒左右,這就是我們延時會有一秒的原因,這就是我們為什么要稱之為近實時的一個原因,當然參數也可以做一個修改,參數叫做index_refresh_interval,來修改刷新的間隔,這就是近實時的一個概念,第二個概念叫做集群,集群的話還是比較好理解的,集群是一個或者是多個節點的集合,它是用來保存應用全部數據的,并基于全部節點的集成,和搜索功能,每個集群都要有一個唯一的名稱,默認就是ElasticSearch,這么一個名稱,這個名稱是非常重要的,另外節點要加入集群,是根據名稱來的,所以不同的環境當中,盡量不要使用相同的名稱,這樣會導致節點在加入名稱會產生一些錯誤,所以在 部署多個集群的時候,每一個集群都要有自己的集群名稱,什么是節點呢,節點就是單臺服務器,這個服務器用來保存數據,并參與集群的一個索引,可搜索的一個操作,那么節點也是有名稱來唯一標識的,這個名稱一般是用一個UUID,通用的唯一標識符,這個名稱一般是在節點啟動的時候,分配給這個節點的,如果不適用默認名稱的話,也可以自定義節點的名稱,可以將節點配置為,通過名稱加入特定的集群,下面一個概念叫做索引,索引在之前也講過了,用來加快搜索速度的,在ES里面,索引是相似文檔的一個集合,索引的內容是和應用本身是相關的,比如在電子商務應用中,可以用索引來保存產品數據,訂單的數據,用戶的數據,每個索引都有一個名稱,通過名稱可以對索引中,來進行添加,更新,刪除,和搜索等等,那么在單個引擎中,可以根據需要來定義數量的一個索引,那這里就是一個索引,類型是對于一個索引中包含文檔的進一步的細分,一般通過文檔的公共屬性來劃分的,比如在電子商務應用的場景,可以根據產品的特征,來劃分成不同的類型,我們可以把類型分為一般產品,虛擬產品,或者說是數字產品等等,這是一個類型,那么文檔的概念,文檔是進行索引的一個基本單位,與索引中的類型是相對應的,比如在一個產品數據索引中,一般產品類型中,具體的產品可以有一個文檔,與之對應,那么文檔使用JSON格式來表示,怎么來理解這個文檔呢,他其實是在一個非結構,文檔對應的是一個實體,那么文檔的一個實例,對應是實體關系型數據庫中的實體的一個實例,也就是具體的某個數據,這就是文檔的一個概念,分片,企業應用中呢,我們一般存儲的數量會比較大,他肯定是會超出單個節點的,所能處理的一個范圍,那么ES他是會允許,把索引分成多個分片,來存儲索引的部分數據,ES會負責分片的一個分配,從可靠性的角度出發的話,你一個分片中的數據,他還需要建立一個副本,那么ES的每一個索引,他都可以分成多個分片,并且會有多個副本,ES會自動管理節點中的分片,和副本,對這些開發人員來說,它是透明的,為什么要設置這個分片呢,一方面他要水平的來分割,或者說縮放,這個內容卷,其次他通過這種分片,可能是分布到多個節點,一方面可以進行一個并行,分布到多個節點上面,從而可以提高性能,吞吐量,分片的一個概念,副本已經講過了,分片可以分為不同的副本,分片副本的一個原因是,故障是不可避免的,使我們的系統高可用性,所以我們要使用副本,將副本的分片要分布到不同的節點上去,這是在高可用方面來說的,那么第二個原因的話,我增加副本其實是,可以增加吞吐量,其實我要把我的搜索,負荷分擔到其他的副本上去,他可以提高他的吞吐量和搜索量,總而言之的話,索引還是可以劃分成多個分片的,那么分片又可以分成多個副本,那么默認情況下,ES他每一個索引,他會分配5個分片,以及一個副本,那么意味著一個集群,至少會有兩個節點,會擁有5個分片,以及5個副本,這樣子總共會有10個分片,這就是分片跟副本的一個概念

那現在我們就演示一下,ES和Springboot是如何集成的,我們環境是這樣子的,首先我們要有一個ElasticSearch服務器,沃=我們用的是1.4.4的版本,其次是SpringData對ElasticSearch的一個支持,這么一個模塊,Spring Data的ElasticSearch的模塊,第三個我們需要JNA,JNA這個庫,JNA是用來訪問操作系統原生的應用的,那么ElasticSearch他需要,安裝這么一個依賴,這就是我們相關的一個配置

?

總結

以上是生活随笔為你收集整理的ElasticSearch 简介,概念和集成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。