這篇文章將為大家詳細(xì)講解有關(guān)ElasticSearch7的特性有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元滕州做網(wǎng)站,已為上家服務(wù),為滕州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
首先要介紹下什么是自適應(yīng)默認(rèn)副本選擇,就是說(shuō) ElasticSearch 會(huì)去記錄各個(gè)數(shù)據(jù)節(jié)點(diǎn)過(guò)去的請(qǐng)求響應(yīng)時(shí)間和在節(jié)點(diǎn)上的執(zhí)行時(shí)間,還有節(jié)點(diǎn)上的線程池隊(duì)列大小來(lái)得出哪個(gè)節(jié)點(diǎn)的各項(xiàng)指標(biāo)好,以后的這種請(qǐng)求就落到這個(gè)節(jié)點(diǎn)去。
Elasticsearch 6 和之前的版本,對(duì)同一分片的一系列搜索請(qǐng)求將以循環(huán)方式轉(zhuǎn)發(fā)給主分片和每個(gè)副本。如果一個(gè)節(jié)點(diǎn)正好開始了很長(zhǎng)時(shí)間的垃圾回收(GC),這可能會(huì)帶來(lái)問(wèn)題,搜索請(qǐng)求仍然可能被轉(zhuǎn)發(fā)到這種響應(yīng)速度會(huì)很非常慢的節(jié)點(diǎn),這就會(huì)對(duì)搜索延遲產(chǎn)生影響。
在6.1版本中,Elasticsearch官方添加了一個(gè)實(shí)驗(yàn)性的自適應(yīng)副本選擇的特性。每個(gè)節(jié)點(diǎn)會(huì)跟蹤和比較搜索請(qǐng)求與其他節(jié)點(diǎn)的耗時(shí),并使用這個(gè)數(shù)據(jù)調(diào)整向特定節(jié)點(diǎn)上的分片發(fā)送請(qǐng)求的頻率。在官網(wǎng)的基準(zhǔn)測(cè)試中,這會(huì)很顯著的提高搜索的吞吐量,官方說(shuō)這種操作減少了99%的延遲。
這個(gè)配置在整個(gè)6.x的版本中被默認(rèn)是禁用的。但是后來(lái)官方陸續(xù)從用戶那里得到反饋,用戶和官方都認(rèn)為這個(gè)設(shè)置非常有用,所以官方在Elasticsearch 7.0.0中默認(rèn)打開了它。
PUT /_cluster/settings { "transient": { "cluster.routing.use_adaptive_replica_selection": true } }
如果關(guān)閉這個(gè)功能,搜索的操作將會(huì)以循環(huán)方式發(fā)送到所有的索引分片。
Skip shard refreshes if a shard is "search idle
Elasticsearch 6 和之前的版本默認(rèn)情況下會(huì)在后臺(tái)自動(dòng)刷新索引數(shù)據(jù)。這也就是為什么Elasticsearch可以“近乎實(shí)時(shí)”得到搜索結(jié)果,默認(rèn)情況下,搜索請(qǐng)求添加后一秒內(nèi)就可以獲得結(jié)果。然而,如果不需要刷新的時(shí)候(例如,如果Elasticsearch沒(méi)有任何查詢搜索的任務(wù)),那么這個(gè)功能就能對(duì)Elasticsearch的性能產(chǎn)生顯著的影響。
通過(guò)引入這種搜索空閑(search idle)的概念,Elasticsearch 7 在默認(rèn)情況下,該分片如果在30秒內(nèi)沒(méi)有過(guò)任何搜索行為,那么這個(gè)就會(huì)被認(rèn)為是搜索空閑。 當(dāng)分片處于這種階段的時(shí)候,所有原計(jì)劃的刷新任務(wù)都會(huì)被跳過(guò),直到你有搜索的問(wèn)題進(jìn)來(lái)的時(shí)候才會(huì)觸發(fā)下一次的刷新任務(wù)。 這會(huì)提高 Elasticsearch 的吞吐量,我們都知道,當(dāng)如果要大量的寫入數(shù)據(jù)或者重新構(gòu)建索引的時(shí)候,關(guān)閉自動(dòng)刷新進(jìn)行數(shù)據(jù)寫入或者更新,速度是可以顯著提高的,這里同理。
很多公司在使用 Elasticsearch 的時(shí)候很亂來(lái),其中比較多的就是過(guò)度分片,而分片數(shù)量的默認(rèn)值可能是個(gè)造成這種現(xiàn)象的主要原因。Elasticsearch 6和之前的版本,每個(gè)索引默認(rèn)有5個(gè)分片。如果有一個(gè)針對(duì)10個(gè)不同的應(yīng)用的每日索引(按日建的索引,類似于數(shù)據(jù)庫(kù)的按日分表),并且每個(gè)應(yīng)用程序默認(rèn)有5個(gè)分片,那么每天將創(chuàng)建50個(gè)分片,即使每天只有幾個(gè)gb的索引數(shù)據(jù),不久之后將會(huì)出現(xiàn)數(shù)千個(gè)分片。
索引生命周期管理是幫助實(shí)現(xiàn)這點(diǎn)的第一步: 提供了本地方法按大小來(lái)創(chuàng)建索引,而不是僅僅按天來(lái)創(chuàng)建索引,并且提供內(nèi)置的收縮功能來(lái)減少每個(gè)索引的分片數(shù)量。 其次就是減少索引的默認(rèn)分片數(shù)量。 當(dāng)然,如果創(chuàng)建索引的時(shí)候我們依然可以自己設(shè)置分片數(shù)量,如果不設(shè)置就會(huì)是默認(rèn)值1.
這個(gè)是重頭戲,這里我要插一下,2015年大四還沒(méi)畢業(yè)的時(shí)候,對(duì)這種索引技術(shù)不是非常深入了解,想要升級(jí)一個(gè)項(xiàng)目的Lucene版本,那時(shí)候用的還是3.x的版本,要升級(jí)到4.x,簡(jiǎn)直是噩夢(mèng)。
與每一個(gè)版本一樣,官方都是希望支持Lucene的最新的主要版本,以及它帶來(lái)的所有的特性。Elasticsearch 7.0 底層用的是 Lucene 8 , Lucene 8為Elasticsearch的許多功能的改進(jìn)奠定了基礎(chǔ),包括對(duì)top-k查詢的搜索性能的改進(jìn)(top-k,可以用于在海量數(shù)據(jù)里查找最大或者最小的K個(gè)值,我思考了下方法有很多,比如用默認(rèn)的前1000個(gè)值的最小堆和所有數(shù)據(jù)進(jìn)行對(duì)比;還可以對(duì)數(shù)據(jù)進(jìn)行分割然后使用快排。。。),以及在保持速度的同時(shí)更好地組合相關(guān)信號(hào)標(biāo)識(shí)進(jìn)行搜索,提高性能。
在Elasticsearch 5.3中,官方引入了跨集群搜索的功能,允許用戶跨多個(gè)集群進(jìn)行查詢。后面官方對(duì)跨集群搜索的這套功能進(jìn)行了改進(jìn),增加了一些特性,最終將其用于棄用和替換tribe節(jié)點(diǎn)(tribe 節(jié)點(diǎn),tribe節(jié)點(diǎn)是跨多個(gè)集群的聯(lián)合客戶端節(jié)點(diǎn),通常用于從多個(gè)Elasticsearch集群檢索信息,使其看起來(lái)像一個(gè)組合集群,詳情可以去看下官方的跨集群搜索功能,根據(jù)官方的文檔,tribe 節(jié)點(diǎn)在7.0版本被移除廢棄。),從而實(shí)現(xiàn)聯(lián)合查詢。
在Elasticsearch 7.0中,官方為跨集群搜索添加了一種新的執(zhí)行模式:在不必要的情況下減少往返的耗時(shí)。這種模式(ccs_minimize_roundtrips)可以在跨集群搜索查詢避免高延遲(例如,跨網(wǎng)絡(luò))從而更快的得到搜索結(jié)果。
Elasticsearch 從設(shè)計(jì)之初就是易于擴(kuò)展的,且這種設(shè)計(jì)能很好的應(yīng)對(duì)災(zāi)難性的故障。為了更好的支持這類需求,官方創(chuàng)建了一個(gè)可插拔的集群協(xié)調(diào)系統(tǒng),其默認(rèn)實(shí)現(xiàn)稱為Zen Discovery(大致的意思就是這個(gè)功能想簡(jiǎn)單點(diǎn)來(lái)實(shí)現(xiàn),你們用戶放心使用就好了,這個(gè)功能是官方引入的集群發(fā)現(xiàn)機(jī)制), Elasticsearch使用量的急劇增加暴露了很多問(wèn)題,例如,Zen的minimum_master_nodes設(shè)置經(jīng)常配置錯(cuò)誤,這會(huì)使群集更容易出現(xiàn)裂腦和丟失數(shù)據(jù)的風(fēng)險(xiǎn)。 跨集群(集群是動(dòng)態(tài)的且非常大),因?yàn)榫S護(hù)此設(shè)置很困難。
在Elasticsearch 7.0,重新設(shè)計(jì)了集群協(xié)調(diào)層。 新的實(shí)現(xiàn)提供了安全的亞秒級(jí)的master選舉時(shí)間,而Zen可能要花幾秒鐘來(lái)選擇一個(gè)新的master,這對(duì)于關(guān)鍵時(shí)候的部署來(lái)說(shuō),這時(shí)間是寶貴的。刪除minimum_master_nodes設(shè)置后,集群的增長(zhǎng)和收縮變得更安全、更容易,減少了因?yàn)橄到y(tǒng)錯(cuò)誤配置埋坑。最重要的是,新的集群協(xié)調(diào)層為Elasticsearch的未來(lái)提供了強(qiáng)大的健壯性,確保將來(lái)可以為這個(gè)模塊設(shè)計(jì)更高級(jí)的功能擴(kuò)展。
Elasticsearch使用時(shí) 7.0加了一個(gè)全新的斷路器,可以跟蹤JVM使用的總內(nèi)存,如果請(qǐng)求導(dǎo)致預(yù)留的內(nèi)存和實(shí)際堆使用量超過(guò)95%,則拒絕請(qǐng)求。官方還將更改默認(rèn)的最大桶數(shù)search.max_buckets為10000,這在6及之前的版本中是不受限制的。在Elasticsearch 7這兩個(gè)改動(dòng),可以防止新手菜鳥第一次玩的時(shí)候運(yùn)行大型查詢和聚合操作引起的集群故障。
官方在Elasticsearch 6.5中引入了一個(gè)beta功能,跨集群復(fù)制?,F(xiàn)在在7.0這個(gè)功能已經(jīng)完善成熟,可以用于生產(chǎn)環(huán)境。 以前版本的跨集群復(fù)制要求復(fù)制只能在新索引上開始,無(wú)法復(fù)制現(xiàn)有索引?,F(xiàn)在,跨集群復(fù)制可以開始復(fù)制在6.7和7.0中啟用了軟刪除的現(xiàn)有索引,并且新索引默認(rèn)為啟用了軟刪除。還引入了一些很新的技術(shù)防止follower嚴(yán)重落后于leader(沒(méi)有說(shuō)明是啥新的技術(shù)),官方在特意在Kibana中添加了一個(gè)管理UI,用于配置遠(yuǎn)程集群。
索引生命周期管理(ILM)是Elasticsearch 6.6中的beta功能?,F(xiàn)在已將ILM正式從Beta版遷移到GA版! ILM使得在Elasticsearch中管理數(shù)據(jù)的生命周期變得更簡(jiǎn)單,包括數(shù)據(jù)在hot,warm,cold,delete階段之間的進(jìn)度情況??梢酝ㄟ^(guò)Elasticsearch中的API來(lái)看,或者Kibana中漂亮的UI來(lái)創(chuàng)建有關(guān)數(shù)據(jù)如何在這些階段中移動(dòng)的情況。
在Elasticsearch 6.7和7.0中,ILM現(xiàn)在可以管理凍結(jié)索引。凍結(jié)索引對(duì)于Elasticsearch中的長(zhǎng)期數(shù)據(jù)存儲(chǔ)很有價(jià)值,并且相對(duì)于節(jié)點(diǎn)管理的數(shù)據(jù)量而言,需要的存儲(chǔ)量(堆)更小。在6.7和7.0中,現(xiàn)在可以將凍結(jié)的索引作為ILM中cold階段的一部分進(jìn)行凍結(jié)。此外,ILM現(xiàn)在可以直接與跨集群復(fù)制(CCR)一起使用,CCR在Elasticsearch 6.7和7.0版本中也都采用了GA。 ILM是免費(fèi)使用的,并且是Elasticsearch的默認(rèn)發(fā)行版的一部分。
Elasticsearch的SQL接口現(xiàn)在是GA。 SQL界面在6.3中作為Alpha發(fā)行版引入,熟悉SQL的可以直接使用Elasticsearch來(lái)查詢需要的數(shù)據(jù),它還允許使用SQL的BI工具輕松訪問(wèn)Elasticsearch中的數(shù)據(jù)。 不僅僅是這些,使用JDBC和ODBC驅(qū)動(dòng)程序訪問(wèn)也可以了,也就是說(shuō)目前官方支持四種方法可以訪問(wèn): Elasticsearch SQL,通過(guò)Elasticsearch REST端點(diǎn)、Elasticsearch SQL接口、JDBC、ODBC。
官方為這個(gè)功能已經(jīng)準(zhǔn)備了很久很久了:創(chuàng)建用于訪問(wèn)Elasticsearch集群的下一代Java客戶端。 這里插一下嘴,其實(shí)我一直喜歡用rest訪問(wèn)es,真的簡(jiǎn)單方便。
7.0之前,Elasticsearch只能存儲(chǔ)毫秒級(jí)的時(shí)間戳。 如果要處理發(fā)生率較高的情況,例如,如果要在Elasticsearch中存儲(chǔ)和分析跟蹤網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù),則可能需要更高的時(shí)間精度。 從過(guò)去的經(jīng)驗(yàn)上來(lái)看,我們?cè)褂肑oda時(shí)間庫(kù)來(lái)處理日期和時(shí)間,而Joda缺乏對(duì)如此高精度時(shí)間戳的支持。 在JDK 8中,引入了正式的Java時(shí)間API,該API也可以處理納秒級(jí)的精確時(shí)間戳,并且在過(guò)去的一年中,官方一直在努力將Joda時(shí)間使用情況遷移到本機(jī)Java時(shí)間,同時(shí)試圖保持向后兼容性。 從7.0.0版本開始,可以通過(guò)專用的date_nanos字段映射器使用這些納秒級(jí)的時(shí)間戳。 請(qǐng)注意,此字段的聚合仍處于毫秒級(jí)分辨率,以避免發(fā)生存儲(chǔ)桶爆炸(好擔(dān)心用這個(gè)詞會(huì)被和諧掉)。
在搜索方面,查詢性能是一項(xiàng)關(guān)鍵功能。對(duì)于不需要精確的命中數(shù)為結(jié)果數(shù)設(shè)置返回?cái)?shù)據(jù)的下限就可以了,Elasticsearch 7.0中的搜索性能有了顯著提高。例如,如果用戶通常只查看網(wǎng)站上結(jié)果的第一頁(yè),而不在乎匹配的文檔有多少,那么可以向他們顯示“超過(guò)10,000個(gè)結(jié)果”,然后為他們提供分頁(yè)結(jié)果。 用戶在查詢中輸入頻繁出現(xiàn)的詞(例如“ the”和“ a”)是很常見的,從過(guò)去經(jīng)驗(yàn)來(lái)上看,即使這些頻繁出現(xiàn)的詞條可能并沒(méi)有太大意義,但是Elasticsearch也會(huì)為它們打分。 在這種情況下,Elasticsearch現(xiàn)在可以跳過(guò)這些分值很高卻無(wú)太大意義的詞。這樣可以大大提高查詢速度。 得分最高的實(shí)際結(jié)果的實(shí)際數(shù)量是可配置的,但默認(rèn)值為10,000。結(jié)果集小于此閾值的查詢的行為不會(huì)改變,也就是說(shuō)結(jié)果數(shù)是準(zhǔn)確的,但是對(duì)于少量匹配結(jié)果的查詢,性能沒(méi)有改善。 由于改進(jìn)是基于跳過(guò)低排名的記錄,因此不適用于聚合操作。
Elasticsearch一直是支持加密通信的,官方最近開始支持JDK 11(關(guān)于JDK11的介紹可以看我以前的博客 https://my.oschina.net/110NotFound/blog/3046749 ),它提供了很多新功能。 JDK 11現(xiàn)在支持TLSv1.3,因此從7.0開始,在Elasticsearch中為運(yùn)行JDK 11的用戶提供TLSv1.3的支持。為了幫助新用戶避免無(wú)意中以低安全性運(yùn)行,所以刪除了TLSv1 .0(默認(rèn)值)。 對(duì)于運(yùn)行舊版Java的用戶,官方提供了具有TLSv1.2和TLSv1.1的默認(rèn)選項(xiàng)。
官方說(shuō)很多用戶最突出的入門障礙是不知道Elasticsearch是Java應(yīng)用程序(如果用戶群體不是熟悉java的開發(fā)人員,這的確會(huì)是一個(gè)很大的問(wèn)題,話說(shuō)回來(lái),開發(fā)人員本身不應(yīng)該局限于某種語(yǔ)言)。 在7.0中,Elasticsearch捆綁了一個(gè)OpenJDK發(fā)行版,以幫助用戶更快地開始使用Elasticsearch。 同時(shí)也支持用戶自己配置JDK。 如果想使用自己機(jī)器環(huán)境的JDK,仍然可以通過(guò)在啟動(dòng)Elasticsearch之前設(shè)置JAVA_HOME來(lái)實(shí)現(xiàn)。
Elasticsearch 7.0有幾種新的字段類型,可以最大程度地利用數(shù)據(jù)。 兩個(gè)核心的可以有助于搜索的用例方法是 rank_feature
和 rank_features
。 它們可用于增強(qiáng)基于數(shù)值或分類值的文檔。
rank_feature 與分?jǐn)?shù)負(fù)相關(guān)的排序特性應(yīng)該將positive_score_impact設(shè)置為false(默認(rèn)為true)。rank_feature
查詢將使用它來(lái)修改評(píng)分公式,使評(píng)分隨特性值的增加而減少,而不是增加。例如在網(wǎng)絡(luò)搜索中,url長(zhǎng)度是一個(gè)常用的與分?jǐn)?shù)負(fù)相關(guān)的特征。
PUT my_index { "mappings": { "properties": { "pagerank": { "type": "rank_feature" }, "url_length": { "type": "rank_feature", "positive_score_impact": false } } } } PUT my_index/_doc/1 { "pagerank": 8, "url_length": 22 } GET my_index/_search { "query": { "rank_feature": { "field": "pagerank" } } }
rank_features 字段可以在索引數(shù)值特征向量,以便以后可以使用rank_feature查詢來(lái)增強(qiáng)查詢中的文檔。 它類似于rank_feature數(shù)據(jù)類型,但更適合特性列表稀疏的情況,因此不太可能為每個(gè)映射添加一個(gè)字段。
PUT my_index { "mappings": { "properties": { "topics": { "type": "rank_features" } } } } PUT my_index/_doc/1 { "topics": { "politics": 20, "economics": 50.8 } } PUT my_index/_doc/2 { "topics": { "politics": 5.2, "sports": 80.1 } } GET my_index/_search { "query": { "rank_feature": { "field": "topics.politics" } } }
除了純文本日志外,官方在Elasticsearch中啟用了JSON日志記錄。 從7.0開始,可以在日志目錄中找到擴(kuò)展名為.json的新文件。 這意味著現(xiàn)在可以使用 jq
之類的過(guò)濾工具以更加結(jié)構(gòu)化的方式漂亮地打印和處理日志。
在7.0中,出現(xiàn)了下一代功能評(píng)分功能。 這個(gè)新的 script_score
查詢提供了一種新的,更簡(jiǎn)單且更靈活的方式來(lái)為每條記錄生成排名分?jǐn)?shù)。 script_score
查詢由一組函數(shù)構(gòu)成,其中包括算術(shù)和距離函數(shù),用戶可以任意搭配這些函數(shù)來(lái)構(gòu)造任意的函數(shù)進(jìn)行得分計(jì)算。 模塊化結(jié)構(gòu)更易于使用,所以向用戶開放這個(gè)重要的功能。
這個(gè)功能是實(shí)驗(yàn)性的,在將來(lái)的版本中可能會(huì)完全改變或刪除。
關(guān)于ElasticSearch7的特性有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
當(dāng)前標(biāo)題:ElasticSearch7的特性有哪些
網(wǎng)站地址:http://jinyejixie.com/article42/peoeec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、動(dòng)態(tài)網(wǎng)站、微信小程序、商城網(wǎng)站、微信公眾號(hào)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)