91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Elasticsearch Mapping類型映射概述與元字段分析

發布時間:2021-11-17 15:35:44 來源:億速云 閱讀:173 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關如何進行Elasticsearch Mapping類型映射概述與元字段分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

小編對ES類型映射機制進行詳細解讀。

Mapping概述

Mapping,映射,相當于關系型數據庫創建語句,定義文檔字段及其類型、索引與存儲方式。通常會涉及如下方面:

  • 文檔中哪些字段需要定義成全文索引字段。

  • 文檔中哪些字段定義為精確值,例如日期,數字、地理位置等。

  • 文檔中哪些字段需要被索引(能通過該字段的值查詢文檔)。

  • 日期值的格式。

  • 動態添加字段的規則定義等。

 
映射類型

Elasticsearch支持meta-fields、fields or properties兩種映射類型,將決定文檔的索引方式。

  • Meta-fields
    元數據字段用于定義文檔的元數據字段的特征,文檔的元數據字段主要包括_index、_type、_id、_sour
    ce這4個字段。

  • Fields or properties
    屬性字段列表,通過properties字段定義整個文檔有效載荷的各字段的數據類型、分詞器等屬性。

映射類型,可以理解為以何種方式來定義索引中一個類型的字段集。

 
數據類型

每一個字段都會指定一個數據類型,數據類型通常如下:

  • 簡單類型,例如text、keyword、d
    ate、long、double、boolean、ip。

  • 復合類型,諸如object(json)、nets
    ed.

  • 特殊類型,諸如geo_point、geo_s
    hape(地圖相關類型)、completion。

后續章節會單獨重點剖析elasticsearch所支持的數據類型。

 
映射保護機制

es提供如下參數來限制es的行為:

  • index.mapping.total_fields.limit
    索引中允許定義的最大字段(屬性)個數,默認為1000。

  • index.mapping.depth.limit
    字段級聯的最大深度,默認為20。

  • index.mapping.nested_fields.limit
    一個索引最多包含字段類型為nest
    ed的個數,默認為50。

 
動態映射機制

與關系型數據庫不同的是,一個type(對應關系型數據庫的表)中的字段可以在使用過程中動態添加。具體的動態映射機制,將在后續文章中單獨結束。

 
更新已有映射定義

Elasticsearch不支持直接修改已索引的已存在的字段映射,因為修改字段映射,意味著已索引的數據生效,可以使用別名機制來修改字段的名稱,如果需要修改已存在字段的映射,建議重新創建一個索引,再使用reindex API遷移數據。

 
索引、type組織方式

索引在創建時,Elasticsearch7.x版本只支持一個映射類型,而7.x版本后將完成刪除映射類型。5.x中一個索引包含多個type的情況再6.x版本將繼續支持查詢。7.0版本后,API將完成移除與多類型相關的API。

Elasticsearch7.x版本后為什么不繼續對單一索引庫提供多類型支持呢?

當初,為了方便理解es,通常與關系型數據庫進行類比,例如es中的index相當于關系型數據庫的database,而類型相當于關系型數據庫中的table。其實這是一個錯誤的比喻。在關系型數據庫中,表是相互獨立的,一個表中的列名與另外一個表中的列名相同是沒有關系的,但對于es的類型映射定義,情況并非如此。

在es單一索引中,不同映射類型(type)具有相同名稱的字段在內部都是由同一個Lucence字段來存儲,這也就意味著同一個索引內不同的類型,如果出現名字相同的字段,其數據類型也必須相同。更重要的是,存儲在同一索引中具有很少或沒有共同字段的不同類型(實體)會導致數據稀疏,大大降低Lucece高效壓縮文檔的能力,影響其檢索性能。

基于上述各種原因,故es將在后續版本中不支持一個索引中定義多個類型。

 

meta-fields

每個文檔都有與之關聯的元數據,例如_index、mapping _type和_id元字段。

在創建映射類型時,可以定制其中一些元字段的行為。

 
identity meta-fields

表明文檔身份的元字段。

  • _index
    文檔所在的索引,類似于關系型數據庫的database。

  • _uid
    _type與_id的組合,文檔的唯一標識。

  • _type
    文檔映射類型。

  • _id
    文檔的_id值。

 
document source meta-fields
  • _source
    文檔的原始json數據。

  • _size
    文檔_souce字段的字節長度,需要插件:mapper-size plugin。

 
indexing meta-fields
  • _all
    將所有字段映射成一個_all字段,在6.0.0版本后廢棄,可以使用copy_to來定義需要聚合的字段。

  • _field_names
    _field_names字段,用于索引文檔中包含除null之外的任何值的每個字段的名稱。exist查詢使用這個字段來查找對于特定字段具有或不具有任何非空值的文檔,也就是該字段記錄的是字段值不為null的所有字段名稱。當前版本,_field_names字段不包含啟用了doc_values、norm的字段,對于啟用doc_values或norm的字段,exist查詢仍然可用,但不會使用_field_names字段。


    注:禁用_field_names通常是不必要的,因為它不再承載以前的索引開銷。如果你有很多禁用doc_value和norm的字段,并且你不需要使用這些字段執行exist查詢,你可能想禁用_field_names,你可以通過如下方式禁用_field_names字段:

 1PUT tweets
2{
3  "mappings": {
4    "_doc": {
5      "_field_names": {
6        "enabled": false
7      }
8    }
9  }
10}                                                        }
 
  • _ignored
    設置為ignore_malformed=true的所有字段。

 
routing meta-field
  • _routing
    分片路由字段。

 
other meta-field
  • _meta
    用于用戶自定義的元數據,例如:

 1PUT my_index
2{
3  "mappings": {
4    "_doc": {
5      "_meta": { 
6        "class": "MyApp::User",
7        "version": {
8          "min": "1.0",
9          "max": "1.3"
10        }
11      }
12    }
13  }
14}                                                        }

以上就是如何進行Elasticsearch Mapping類型映射概述與元字段分析,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大庆市| 砀山县| 安庆市| 昌江| 武强县| 韶关市| 凤庆县| 桑日县| 太原市| 海伦市| 张北县| 靖安县| 固原市| 万安县| 承德市| 井冈山市| 高淳县| 长白| 蚌埠市| 阆中市| 根河市| 绥棱县| 贵溪市| 平原县| 竹山县| 偃师市| 沾化县| 唐河县| 随州市| 漠河县| 印江| 博野县| 黄山市| 河曲县| 白朗县| 开平市| 弋阳县| 成安县| 竹山县| 河西区| 剑河县|