1. 程式人生 > >elasticsearch中mapping中的可設定的屬性

elasticsearch中mapping中的可設定的屬性

mappings : 在index(庫)下建立時使用,下面可以有多個mapping 以下資料結構主要針對每個mapping進行說明:

一級屬性 二級屬性 三級屬性 說明
dynamic     新增欄位自動模式;true:表示自動識別新欄位並建立索引,false:不自動索引新欄位,strict:遇到未知欄位,拋異常,不能存入
_timestamp     是否使用時間戳,ES會自動加時間戳,使用的話請百度
properties     屬性列表(類似資料庫多個欄位定義)
  {欄位名}   某個欄位的定義
    type 資料型別,參見資料型別說明
    index 對映選型,參見對映選型說明
    doc_values 布林值, 對not_analyzed欄位,預設都是開啟,分詞欄位不能使用,對排序和聚合能提升較大效能,節約記憶體
    format 如果資料型別為日期格式,傳入值得時候是字串,ES需要一個格式進行識別,如:yyyy-MM-dd HH:mm: ss
    analyzer 分詞器,如ik,ansj(中文分詞)
    boost 浮點型,欄位級別的分數加權(權重)
    ignore_above 超過多少字元,就不處理,分詞效能損耗較大,對字串較長的可不分詞
    null_value 設定一些缺失欄位的初始化值,只有string可以使用,分詞欄位的null值也會被分詞
    store 是否單獨設定此欄位的是否儲存而從_source欄位中分離,預設是false,只能搜尋,不能獲取值
    search_analyzer 設定搜尋時的分詞器,預設跟ananlyzer是一致的,比如index時用standard+ngram,搜尋時用standard用來完成自動提示功能
    其它 similarity,term_vector,norms,include_in_all,index_options,fielddata,ignore_malformed,precision_step

 

一個典型的mapping物件的屬性有:

{
    "mappings": {
        "my_type": {
        //true:表示自動識別新欄位並建立索引,false:不自動索引新欄位,strict:遇到未知欄位,拋異常,不能存入
            "dynamic":      "strict", 
            
              //動態模板
             "dynamic_templates": [
                    { "stash_template": {
                      "path_match":  "stash.*",
                      "mapping": {
                        "type":           "string",
                        "index":       "not_analyzed"
                      }
                    }}
                  ],
            //屬性列表
            "properties": {
                //一個strign型別的欄位
                "title":  { "type": "string"},
                
                "stash":  {
                    "type":     "object",
                    "dynamic":  true 
                }
            }
        }
    }
}