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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch 简介,概念和集成

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

ES他有哪些特點(diǎn)呢,我們來(lái)做一下介紹,首先ES它是一款分布式的搜索引擎,他如何來(lái)實(shí)現(xiàn)分布式,他每個(gè)索引都使用分片,每個(gè)分片又可以有多個(gè)副本,在任何的一個(gè)副本分片上,來(lái)執(zhí)行這個(gè)讀取,跟搜索操作,這是他分布式的一個(gè)特點(diǎn),他的索引是分布的,這就是他分布式的一個(gè)特點(diǎn),正是因?yàn)樗植际降奶攸c(diǎn),所以才造就了他高可用的一個(gè)特點(diǎn),為什么說(shuō)分布式他就有一個(gè)高可用呢,那么可以理解,假設(shè)我這個(gè)某一個(gè)系統(tǒng),某一個(gè)系統(tǒng)它是非分布式的,單擊的系統(tǒng),他只有一個(gè)主機(jī),主機(jī)你不管多牛逼的一個(gè)主機(jī),遲早都有奔潰的一天,不管什么原因,他某一天奔潰了,顯然在主機(jī)上的一個(gè)系統(tǒng),他就不可用了,用不了了,那么分布式的話,他就是系統(tǒng)假設(shè)分布到了10臺(tái)機(jī)器上,我有10個(gè)主機(jī)組成了分布式系統(tǒng),那么我任何的一臺(tái)主機(jī),掛掉了,那么剩余的仍然可以提供服務(wù),所以在一個(gè)分布式的系統(tǒng)里面,若干臺(tái)的主機(jī)奔潰了,他升級(jí)一下分布式系統(tǒng)的一個(gè)運(yùn)作,所以他仍然是可用的,服務(wù)仍然是可用的,所以為什么說(shuō)他是一個(gè)高可用的原因,然后ES他也支持多種數(shù)據(jù)類型,API他支持http的restful,我們也會(huì)用到restful的API的,他也支持原生的JAVA api,他還有一個(gè)特點(diǎn)是面向文檔的,不需要事先去定義一些模式,如果對(duì)nosql有了解的話,nosql是不需要事先定義一些模式的,他可以直接就創(chuàng)建這個(gè)文檔,每個(gè)類型都定義模式,自定義索引,然后異步導(dǎo)入,對(duì)于同步寫入來(lái)說(shuō),異步上性能會(huì)更高,所以寫入性能還是比較高的,然后他還有個(gè)特點(diǎn)是近實(shí)時(shí),就是接近實(shí)時(shí),他的搜索性能上還是非常高的,雖然他還沒(méi)有做到全實(shí)時(shí),接近實(shí)時(shí),為什么說(shuō)它是近實(shí)時(shí)呢,我們?cè)诤竺娴慕榻B,ES它是基于Lucene,這個(gè)我們之前也講過(guò),是基于Lucene,然后他還是開源協(xié)議,是遵循Apache的開源協(xié)議,ES他也是一款開源的產(chǎn)品,也是遵循Apache的開源協(xié)議,這些就是ES的特點(diǎn)

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

那現(xiàn)在我們就演示一下,ES和Springboot是如何集成的,我們環(huán)境是這樣子的,首先我們要有一個(gè)ElasticSearch服務(wù)器,沃=我們用的是1.4.4的版本,其次是SpringData對(duì)ElasticSearch的一個(gè)支持,這么一個(gè)模塊,Spring Data的ElasticSearch的模塊,第三個(gè)我們需要JNA,JNA這個(gè)庫(kù),JNA是用來(lái)訪問(wèn)操作系統(tǒng)原生的應(yīng)用的,那么ElasticSearch他需要,安裝這么一個(gè)依賴,這就是我們相關(guān)的一個(gè)配置

?

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。