五十一、Elasticsearch正排索引doc value再次講解

1、doc value原理

(1)index-time生成

PUT/POST的時候,就會生成doc value數(shù)據(jù),也就是正排索引

(2)核心原理與倒排索引類似

正排索引,也會寫入磁盤文件中,然后呢,os cache先進(jìn)行緩存,以提升訪問doc value正排索引的性能
如果os cache內(nèi)存大小不足夠放得下整個正排索引,就會將doc value的數(shù)據(jù)寫入磁盤文件中

(3)性能問題:給jvm更少內(nèi)存,64g服務(wù)器,給jvm最多16g

es官方是建議,es大量是基于os cache來進(jìn)行緩存和提升性能的,不建議用jvm內(nèi)存來進(jìn)行緩存,那樣會導(dǎo)致一定的gc開銷和oom問題
給jvm更少的內(nèi)存,給os cache更大的內(nèi)存
64g服務(wù)器,給jvm最多16g,剩下來的幾十個g的內(nèi)存給os cache
os cache可以提升doc value和倒排索引的緩存和查詢效率

2、column壓縮

doc1: 550
doc2: 550
doc3: 500

合并相同值,550,doc1和doc2都保留一個550的標(biāo)識即可

(1)所有值相同,直接保留單值
(2)少于256個值,使用table encoding模式:一種壓縮方式
(3)大于256個值,看有沒有最大公約數(shù),有就除以最大公約數(shù),然后保留這個最大公約數(shù)

doc1: 36
doc2: 24

6 --> doc1: 6, doc2: 4 --> 保留一個最大公約數(shù)6的標(biāo)識,6也保存起來

(4)如果沒有最大公約數(shù),采取offset結(jié)合壓縮的方式:

3、disable doc value 禁用正排索引

如果的確不需要doc value,比如不需要聚合等操作,那么可以禁用,減少磁盤空間占用

PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"my_field": {
"type": "keyword"
"doc_values": false
}
}
}
}
}

若有興趣,歡迎來加入群,【Java初學(xué)者學(xué)習(xí)交流群】:458430385,此群有Java開發(fā)人員、UI設(shè)計(jì)人員和前端工程師。有問必答,共同探討學(xué)習(xí),一起進(jìn)步!
歡迎關(guān)注我的微信公眾號【Java碼農(nóng)社區(qū)】,會定時推送各種干貨:


qrcode_for_gh_577b64e73701_258.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容