天天看點

白話Elasticsearch50-深入聚合資料分析之doc values機制概述官網doc value原理column壓縮disable doc value

白話Elasticsearch50-深入聚合資料分析之doc values機制概述官網doc value原理column壓縮disable doc value

概述

繼續跟中華石杉老師學習ES,第51篇

課程位址: https://www.roncoo.com/view/55

官網

doc_values: 戳這裡

白話Elasticsearch50-深入聚合資料分析之doc values機制概述官網doc value原理column壓縮disable doc value
白話Elasticsearch50-深入聚合資料分析之doc values機制概述官網doc value原理column壓縮disable doc value

doc value原理

(1)index-time生成

PUT/POST的時候,就會生成doc value資料,也就是正排索引

(2)核心原理與反向索引類似

正排索引,也會寫入磁盤檔案中,然後呢,os cache先進行緩存,以提升通路doc value正排索引的性能

如果os cache記憶體大小不足夠放得下整個正排索引,doc value,就會将doc value的資料寫入磁盤檔案中。

(3)性能問題:給jvm更少記憶體,64g伺服器,給jvm最多16g

es官方是建議,es大量是基于os cache來進行緩存和提升性能的,不建議用jvm記憶體來進行緩存,那樣會導緻一定的gc開銷和oom問題。

給jvm更少的記憶體,給os cache更大的記憶體。

舉個例子:64g伺服器,給jvm最多16g,剩下的幾十個g的記憶體給os cache

os cache可以提升doc value和反向索引的緩存和查詢效率

column壓縮

(1)所有值相同,直接保留單值

舉個例子

doc1: 100
doc2: 100
doc3: 200           

複制

合并相同值,100,doc1和doc2都保留一個100的辨別即可

(2)少于256個值,使用table encoding模式

了解即可, table encoding 一種壓縮方式

(3)大于256個值,看有沒有最大公約數,有就除以最大公約數,然後保留這個最大公約數

舉個例子

doc1: 36
doc2: 24           

複制

doc1: 最大公約數6, doc2: 最大公約數4 -----> 保留一個最大公約數6的辨別,6也儲存起來

disable doc value

如果的确不需要doc value,那麼可以禁用,減少磁盤空間占用

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

複制