這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Elasticsearch常見(jiàn)的5個(gè)錯(cuò)誤及解決策略是什么,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站主營(yíng)長(zhǎng)島網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開(kāi)發(fā),長(zhǎng)島h5重慶小程序開(kāi)發(fā)公司搭建,長(zhǎng)島網(wǎng)站營(yíng)銷(xiāo)推廣歡迎長(zhǎng)島等地區(qū)企業(yè)咨詢(xún)
如果不定義Mapping,Elasticsearch會(huì)根據(jù)輸入的數(shù)據(jù),創(chuàng)建對(duì)應(yīng)的Mapping,這看起來(lái)非常完美,但是Elasticsearch的動(dòng)態(tài)Mapping并不總是精確的。
動(dòng)態(tài)Mapping對(duì)于入門(mén)很有用
,但在某些時(shí)候您需要結(jié)合業(yè)務(wù)數(shù)據(jù)指定Mapping。
舉例1:5.x版本之后,需要分詞的字段需要設(shè)定text類(lèi)型和對(duì)應(yīng)的analyzer
;僅需要精確匹配的可直接設(shè)置為keyword類(lèi)型。
舉例2:長(zhǎng)文本高亮需要在text類(lèi)型的基礎(chǔ)上,設(shè)置fast-vector-highlighter
高亮方式,高亮效率能提升20倍以上。
在某些聚合中,沒(méi)有足夠的內(nèi)存來(lái)支持復(fù)雜的嵌套聚合,導(dǎo)致聚合結(jié)果超時(shí)甚至OOM
。
聚合爆炸是計(jì)算問(wèn)題,可能導(dǎo)致某些聚合的桶生成呈指數(shù)增長(zhǎng),并可能導(dǎo)致不受控制的內(nèi)存使用。
Elasticsearch“terms”字段根據(jù)您的數(shù)據(jù)構(gòu)建存儲(chǔ)桶,但無(wú)法預(yù)測(cè)將提前創(chuàng)建多少存儲(chǔ)桶。 對(duì)于由多個(gè)子聚合組成的父聚合,這可能會(huì)有問(wèn)題。 組合每個(gè)子聚合中的唯一值可能會(huì)導(dǎo)致創(chuàng)建的桶數(shù)量大幅增加。
我們來(lái)看一個(gè)例子。
假設(shè)您有一個(gè)代表運(yùn)動(dòng)隊(duì)的數(shù)據(jù)集。 如果你想特別關(guān)注那支球隊(duì)的前10名球員和以及他們的支持球員,那么聚合將如下所示
1{
2"aggs" : {
3"play_aggs" : {
4"terms" : {
5"field" : "players",
6"size" : 10
7},
8"aggs" : {
9"other_aggs" : {
10"terms" : {
11"field" : "players",
12"size" : 5
13}
14}
15}
16}
17}
18}
聚合將返回前10名球員的列表以及每位頂級(jí)球員的前五名支持球員的列表 - 這樣總共將返回50個(gè)值。這個(gè)看上去簡(jiǎn)單的查詢(xún)可以輕而易舉地消耗大量?jī)?nèi)存。
terms聚合可以顯示為使用每個(gè)級(jí)別的桶的樹(shù)。因此,以上聚合中每個(gè)頂級(jí)球員的桶將構(gòu)成第一級(jí),而另一個(gè)聚合中的每個(gè)支持球員的桶將構(gòu)成第二級(jí)。因此,一個(gè)團(tuán)隊(duì)將生產(chǎn)n2桶
。想象一下,如果您擁有5億個(gè)文檔的數(shù)據(jù)集會(huì)發(fā)生什么
。
Collection Mode用于幫助控制子聚合的執(zhí)行方式。聚合的默認(rèn)Collection Mode稱(chēng)為深度優(yōu)先,首先需要構(gòu)建整個(gè)樹(shù),然后修剪邊緣。雖然深度優(yōu)先是大多數(shù)聚合的適當(dāng)收集模式,但它不適用于上面的運(yùn)動(dòng)員聚合示例。因此,Elasticsearch允許您將特定聚合中的收集模式更改為更合適
的方式。
諸如上面的示例之類(lèi)的規(guī)范應(yīng)該使用廣度優(yōu)先收集模式
,該模式一次構(gòu)建和修剪樹(shù)一級(jí)以控制聚合爆炸。 此收集模式極大地幫助減少消耗的內(nèi)存量并保持節(jié)點(diǎn)穩(wěn)定。
1{
2"aggs" : {
3"play_aggs" : {
4"terms" : {
5"field" : "players",
6"size" : 10,
7"collect_mode" : "breadth_first"
8},
9"aggs" : {
10"other_aggs" : {
11"terms" : {
12"field" : "players",
13"size" : 5
14}
15}
16}
17}
18}
19}
推薦閱讀:http://t.cn/RHndSgY
ES啟動(dòng)的默認(rèn)群集名稱(chēng)稱(chēng)為elasticsearch。 如果群集中有許多節(jié)點(diǎn),最好保持命名標(biāo)志盡可能一致
,例如:
1cluster.name:app_es_production
2node.name:app_es_node_001
節(jié)點(diǎn)的恢復(fù)設(shè)置
也很重要。 假設(shè)群集中的某些節(jié)點(diǎn)由于故障而重新啟動(dòng),并且某些節(jié)點(diǎn)在其他節(jié)點(diǎn)之后重啟。 為了使所有這些節(jié)點(diǎn)之間的數(shù)據(jù)保持一致,我們必須運(yùn)行一致性程序,以使所有集群保持一致?tīng)顟B(tài)。
舉例1:只要10個(gè)數(shù)據(jù)或主節(jié)點(diǎn)已加入群集,即可恢復(fù)。
1gateway.recover_after_nodes:10
舉例2:集群中期待啟動(dòng)節(jié)點(diǎn)達(dá)到20個(gè)以及時(shí)間超過(guò)7分鐘后,集群重啟或恢復(fù)。
1gateway.expected_nodes:20
2gateway.recover_after_time:7m
使用正確的配置,可能需要數(shù)小時(shí)的恢復(fù)縮減到只需要分鐘級(jí),極大提高工作效率。
minimum_master_nodes
對(duì)于群集穩(wěn)定性非常重要。 它們有助于防止腦裂。
此設(shè)置的建議值為(N / 2)+ 1 , 其中N是候選主節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)。
有了這個(gè),如果你有10個(gè)可以保存數(shù)據(jù)并成為主數(shù)據(jù)的 候選主節(jié)點(diǎn),那么該值將是6。
如果您有三個(gè)專(zhuān)用主節(jié)點(diǎn)和1,000個(gè)數(shù)據(jù)節(jié)點(diǎn),則該值為兩個(gè)(僅計(jì)算候選主節(jié)點(diǎn)):
discovery.zen.minimum_master_nodes:2
1“我需要多少存儲(chǔ)空間、多大的內(nèi)存?”是用戶(hù)經(jīng)常問(wèn)自己的問(wèn)題。
遺憾的是,沒(méi)有固定的公式,但可以采取某些步驟來(lái)協(xié)助規(guī)劃資源。
推薦方法:模擬實(shí)際用例。
步驟1:創(chuàng)建ES集群。
步驟2:使用與生產(chǎn)設(shè)置所需的數(shù)據(jù)速率幾乎相同的數(shù)據(jù)。
步驟3:?jiǎn)?dòng)節(jié)點(diǎn),用真實(shí)文檔填充它們,然后推送填充數(shù)據(jù)到索引分片。
在模擬實(shí)際用例過(guò)程中了解資源利用率非常重要,因?yàn)樗试S您為節(jié)點(diǎn)保留適當(dāng)?shù)腞AM量,配置JVM堆空間并優(yōu)化整個(gè)測(cè)試過(guò)程。
根據(jù)模擬結(jié)果,決定實(shí)際集群的內(nèi)存、CPU、磁盤(pán)容量。
ES節(jié)點(diǎn)具有許多線程池,以便改進(jìn)節(jié)點(diǎn)內(nèi)線程的管理方式。 但是每個(gè)線程可以處理多少數(shù)據(jù)存在限制。 要跟蹤此值,我們可以使用ES屬性:
1threadpool.bulk.queue_size:2000
這會(huì)向ES通知分片中的請(qǐng)求數(shù),當(dāng)沒(méi)有可用于處理請(qǐng)求的線程時(shí),新請(qǐng)求可以在節(jié)點(diǎn)中排隊(duì)等待執(zhí)行。 如果任務(wù)數(shù)高于此值,您將獲得RemoteTransportException。 該值越高,節(jié)點(diǎn)機(jī)器上所需的堆空間量就越大,并且JVM堆也將被消耗。
此外,你應(yīng)該在代碼的開(kāi)發(fā)階段做好異常處理。
注意:ES官網(wǎng)不建議修改此值。
Elasticsearch的使用過(guò)程中總會(huì)遇到這樣、那樣的問(wèn)題,多總結(jié)、多思考,形成針對(duì)業(yè)務(wù)場(chǎng)景的有效的解決方案。
同時(shí),也要多吸取國(guó)內(nèi)外社區(qū)、論壇、博客中的精華,取長(zhǎng)補(bǔ)短。
注意:網(wǎng)絡(luò)文獻(xiàn)一般沒(méi)有涉及版本,老版本ES一些配置不一定適用于6.X最新版本,但,底層的技術(shù)永遠(yuǎn)不過(guò)時(shí)。
上述就是小編為大家分享的Elasticsearch常見(jiàn)的5個(gè)錯(cuò)誤及解決策略是什么了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:Elasticsearch常見(jiàn)的5個(gè)錯(cuò)誤及解決策略是什么
文章路徑:http://aaarwkj.com/article44/gjggee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、App設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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)