問題1:
由于es索引不能刪除,不能修改,在不影響原數(shù)據(jù)的情況下,并且生產(chǎn)服務(wù)不停機(jī)的情況下,怎么修改索引,并保留原索引內(nèi)的數(shù)據(jù)?
基于kibanna的dev Tools執(zhí)行參數(shù),淘汰postman,kibanna會(huì)有提示
1、原來索引起別名job
2、重建索引,數(shù)據(jù)遷移,默認(rèn)是同步執(zhí)行大數(shù)據(jù)量太慢,可以設(shè)置為異步執(zhí)行(url新增參數(shù) wait_for_completion = false),[reindex方法 source來源index1 -> dest目標(biāo)index2,這塊不是別名,是索引名]
3、刪除原來索引別名為job,重建新索引命名為job
特注:
es在項(xiàng)目中正常是先存入mysql中備份,然后再寫入到es中,然后再前端查詢es,保證高可用,數(shù)據(jù)的不丟失,refresh對(duì)于熱點(diǎn)數(shù)據(jù)可以設(shè)置刷新時(shí)間,如果刷新的過于頻繁會(huì)影響IO性能,對(duì)于非熱點(diǎn)數(shù)據(jù)都是幾分鐘或者幾個(gè)小時(shí)刷新一次(多線程的情況下,a線程寫入數(shù)據(jù)進(jìn)入es,b線程沒查到,是因?yàn)閍線程還沒有刷新到內(nèi)存中,對(duì)于熱點(diǎn)數(shù)據(jù)可以使用refresh即時(shí)的刷新到內(nèi)存中,b線程就可以查到a線程寫入的數(shù)據(jù))
refresh解決索引的一致性!
問題2:
es集群分片原理
https://www.freesion.com/article/3467651389/
分片關(guān)鍵字的理解:
分片是在es7.0版本后,索引創(chuàng)建時(shí),es模板一個(gè)索引創(chuàng)建一個(gè)主分片和一個(gè)副本分片,
分片創(chuàng)建成功后就不能被修改,除非reindex重新創(chuàng)建索引,指定想要設(shè)置的主分片數(shù)和副本分片數(shù),如果索引template_index設(shè)置3個(gè)主分片(a,b,c),分別在3個(gè)不同的節(jié)點(diǎn)上,a + b + c數(shù)據(jù)整合起來才是一個(gè)完整的數(shù)據(jù),主分片是除法操作,副本分片是乘法操作,并且主分片和副本分片一定不能在同一個(gè)節(jié)點(diǎn)服務(wù)器上,保證高可用,某個(gè)節(jié)點(diǎn)掛掉,不影響副本分片數(shù)據(jù)的返回。并且es訪問主分片和副本分片是隨機(jī)訪問的,最少一個(gè)節(jié)點(diǎn)有一套完整的分片數(shù)據(jù)。節(jié)點(diǎn)配置可以在es.yml文件里配置,通過docker命令的方式重啟生效。
問題3:
es里剛存入的數(shù)據(jù)能不能被實(shí)時(shí)查詢到?文章來源:http://www.zghlxwxcb.cn/news/detail-526423.html
不能被實(shí)時(shí)查到,必須經(jīng)過index buffer緩沖區(qū),緩存到filesystem cache文件系統(tǒng)緩存區(qū)后,才能被查到。文章來源地址http://www.zghlxwxcb.cn/news/detail-526423.html
到了這里,關(guān)于Elasticsearch解決不能修改索引、字段問題解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!