Elasticsearch之元數(shù)據(jù)(meta-fields)介紹

image.png

1. 什么是meta-fields

在Elasticsearch下,一個文檔除了有數(shù)據(jù)之外,它還包含了元數(shù)據(jù)(Metadata)。每創(chuàng)建一條數(shù)據(jù)時,都會對元數(shù)據(jù)進(jìn)行寫入等操作,當(dāng)然有些元數(shù)據(jù)是在創(chuàng)建mapping的時候就會設(shè)置,

它里面定義了每個添加的doc的處理方式。 類似于數(shù)據(jù)庫的表結(jié)構(gòu)數(shù)據(jù)。

2. 有哪些meta-fields

ES中元數(shù)據(jù)大體分為五中類型:身份元數(shù)據(jù)、索引元數(shù)據(jù)、文檔元數(shù)據(jù)、路由元數(shù)據(jù)以及其他類型的元數(shù)據(jù)

2.1. 身份元數(shù)據(jù)

  • _index:文檔所屬索引 , 自動被索引,可被查詢,聚合,排序使用,或者腳本里訪問

  • _type:文檔所屬類型,自動被索引,可被查詢,聚合,排序使用,或者腳本里訪問

  • _id:文檔的唯一標(biāo)識,

    建索引時候傳入 ,不被索引, 可通過_uid被查詢,腳本里使用,不能參與聚合或排序

  • _uid:由_type和_id字段組成,自動被索引 ,可被查詢,聚合,排序使用,或者腳本里訪問

2.2. 索引元數(shù)據(jù)

  • _all: 自動組合所有的字段值,以空格分割,可以指定分器詞索引,但是整個值不被存儲,所以此字段僅僅能被搜索,不能獲取到具體的值
  • _field_names:索引了每個字段的名字,可以包含null值,可以通過exists查詢或missing查詢方法來校驗特定的字段
  • _timestamp:可以手工指定時間戳值,也可以自動生成使用now()函數(shù),除此之外還可以設(shè)置日期的格式化,忽略確實等功能
  • _ttl:對于一些會話數(shù)據(jù)或者驗證碼失效時間,一般來說是有生命周期的,在es中可以很方便的通過這個ttl來設(shè)置存活時間,比如1小時,或者10分鐘,在超時過后,這個doc會被自動刪除,這種方式并不適合按周或按天刪除歷史數(shù)據(jù),如果是這種需求,可考慮使用索引級別的管理方式

2.3. 文檔元數(shù)據(jù)

_source是可以被禁用的,不過禁用之后部分功能再支持:

2.4. 路由元數(shù)據(jù)

  • _parent:在同一個索引中,可以通過_parent字段來給兩個不同mapping type的數(shù)據(jù)建立父子關(guān)系,在查詢時可以通過has_child, has_parent等查詢,來聚合join數(shù)據(jù),需要注意的是,父子type必須不能是一樣的,否則會識別失敗。
  • _routing: 一個doc可以被路由到指定的shard上,通過下面的規(guī)則:
    shard_num = hash(_routing) % num_primary_shards
    默認(rèn)情況下,會使用doc的_id字段來參與路由規(guī)則,如果此doc有父子關(guān)系,則會以父親的_id作為路由規(guī)則,以確保父子數(shù)據(jù) 必須處于同一個shard上,以提高join效率

需要注意的是如果指定了使用自己的路由規(guī)則,如果兩個文檔_id參數(shù)一樣,但是路由規(guī)則值不一樣,有可能造成這兩條數(shù)據(jù)被分發(fā)到不同的shard,所以在使用自己的路由規(guī)則時

注意_id參數(shù)的唯一性。

2.5. 其他

  • _meta:每個mapping type可以有不同的元數(shù)據(jù)類型,我們可以存儲自己定義認(rèn)為的元數(shù)據(jù)中,此字段支持查詢和更新

3. 參考資料

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/mapping-fields.html

http://m635674608.iteye.com/blog/2259528

http://www.111cn.net/jsp/J2EE-EJB/118565.htm


個人介紹:

高廣超:多年一線互聯(lián)網(wǎng)研發(fā)與架構(gòu)設(shè)計經(jīng)驗,擅長設(shè)計與落地高可用、高性能、可擴(kuò)展的互聯(lián)網(wǎng)架構(gòu)。

本文首發(fā)在 高廣超的簡書博客 轉(zhuǎn)載請注明!

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

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

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