elasticsearch 字段常用配置參數解釋

主要解釋下面3個常用的參數:

  1. index 參數
  2. store 與 _source 參數
  3. doc_value 參數

1、index 參數

默認爲true。當設置爲true時,代表需要對該字段進行檢索,也即倒排查詢,根據 query 條件 查詢 doc_id

2、store 與 _source 參數

這2個參數是“互補”的。一般而言,_source 設置成 false,然後具體需要獲取哪個字段時,將該字段的 store 選項設置成true。因爲開啓 _source ,表示直接存儲的原始的 doc 文件內容,佔用的磁盤空間較大。而 store 則表示只存儲此字段,採用的是:“行存的方式”(by the way doc_value 是列存方式),相比於_source 存儲原始的doc文件,“行存方式” 會對該字段建“索引”(索引文件fdx、數據文件fdm),從而能夠高效訪問。

3、doc_value

默認開啓。開啓doc_value意味着:在寫入doc時,會對該字段創建:列存索引,用於排序聚合。類似於HBase,某字段開啓 doc_value 後,會把所有文檔中該字段的值放在“一起存儲”,由於同一個字段它的類型是確定的,那麼該字段所有的值都放在一起存儲能夠很好地使用壓縮算法進行壓縮存儲。

舉例:有個ES索引有100個doc,其中有個字段是“銷量字段 sale_cnt”,它是int型的,對銷量字段開啓了doc_value,則這100個doc的 sale_cnt 字段的值 都會“放在一起存儲”,由於這些值都是 int 型的,那就可以用各種數據結構做存儲優化(比如壓縮算法)

當需要對 銷量字段 做排序時,顯然是隻有獲取 銷量字段 sale_cnt 所有的值才能排序,那麼開啓 doc_value 就能大大加速排序了。這也是爲什麼官方文檔中說:doc_value 用於排序聚合的原因。

總結

index 參數代表建立倒排索引結構,是倒排存儲。而:store 和 doc_value 則代表建立:正排索引,正排索引有2種存儲方式:行存和列存,其中 store 採用行存方式實現,doc_value 採用列存方式實現。

參考鏈接

index參數:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html
_source參數:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html
store參數:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-store.html
doc_value參數:https://www.elastic.co/guide/en/elasticsearch/reference/current/doc-values.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章