天天看點

ES Mapping,2 Meta中繼資料Meta中繼資料

Meta中繼資料

  • 身份中繼資料
  • 索引中繼資料
  • 文檔中繼資料
  • 路由中繼資料
  • 其他
PUT /idx_pro/
{
  "settings": {
    "index": {
        "number_of_shards" : "2",
        "number_of_replicas" : "0"
    }
  },
  "mappings": {
    "properties": {
      "proId" : {
        "type": "keyword",
        "ignore_above": 64
      },
      "name" : {
        "type": "text",
        "analyzer": "ik_max_word", 
        "search_analyzer": "ik_smart", 
        "fields": {
          "keyword" : {"ignore_above" : 256, "type" : "keyword"}
        }
      },
      "mytimestamp" : {
        "type": "date",
        "format": "epoch_millis"
      },
      "createTime" : {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}
           
Meta 說明
_all 自動組合所有的字段值,以空格分割,可以指定分器詞索引,但是整個值不被存儲,是以此字段僅僅能被搜尋,不能擷取到具體的值
_field_names 索引了每個字段的名字,可以包含null值,可以通過exists查詢或missing查詢方法來校驗特定的字段
_id 文檔的唯一辨別
_index 文檔所屬索引 , 自動被索引,可被查詢,聚合,排序使用,或者腳本裡通路
_meta
_parent
_routing
_source 一個doc的原生的json資料,不會被索引,用于擷取提取字段值 ,啟動此字段,索引體積會變大,如果既想使用此字段
_type 文檔所屬類型,自動被索引,可被查詢,聚合,排序使用,或者腳本裡通路
_uid 由_type和_id字段組成,自動被索引 ,可被查詢,聚合,排序使用,或者腳本裡通路
_timestamp 可以手工指定時間戳值,也可以自動生成使用now()函數,除此之外還可以設定日期的格式化,忽略确實等功能
_ttl 對于一些會話資料或者驗證碼失效時間,一般來說是有生命周期的,在es中可以很友善的通過這個ttl來設定存活時間,比如1小時,或者10分鐘,在逾時過後,這個doc會被自動删除,這種方式并不适合按周或按天删除曆史資料,如果是這種需求,可考慮使用索引級别的管理方式
_size 整個_source字段的位元組數大小

身份中繼資料

_index

文檔所屬索引 , 自動被索引,可被查詢,聚合,排序使用,或者腳本裡通路

_type

文檔所屬類型,自動被索引,可被查詢,聚合,排序使用,或者腳本裡通路

_id

文檔的唯一辨別

索引中繼資料

_all

動組合所有的字段值,以空格分割,可以指定分器詞索引,

但是整個值不被存儲,是以此字段僅僅能被搜尋,不能擷取到具體的值

_field_names

索引了每個字段的名字,可以包含null值,可以通過exists查詢或missing查詢方法來校驗特定的字段

_timestamp

可以手工指定時間戳值,也可以自動生成使用now()函數,除此之外還可以設定日期的格式化,忽略确實等功能

_ttl

對于一些會話資料或者驗證碼失效時間,一般來說是有生命周期的,在es中可以很友善的通過這個ttl來設定存活時間,比如1小時,或者10分鐘,在逾時過後,這個doc會被自動删除,這種方式并不适合按周或按天删除曆史資料,如果是這種需求,可考慮使用索引級别的管理方式

文檔中繼資料

_source

一個doc的原生的json資料,不會被索引,用于擷取提取字段值 ,啟動此字段,索引體積會變大,如果既想使用此字段

又想兼顧索引體積,可以開啟索引壓縮

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/index-modules.html#index-codec
           

_size

整個_source字段的位元組數大小,需要單獨安裝一個插件才能展示,詳情參見:https://www.elastic.co/guide/en/elasticsearch/plugins/5.4/mapper-size.html

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

update api:

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/docs-update.html 
https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-request-highlighting.html 
           

索引重建、修改mapping以及分詞、索引更新

debug查詢或者聚合語句

索引自動修複

路由中繼資料

_parent

在同一個索引中,可以通過_parent字段來給兩個不同mapping type的資料建立父子關系,在查詢時可以通過has_child, has_parent等查詢,來聚合join資料,需要注意的是,父子type必須不能是一樣的,否則會識别失敗。

_routing

一個doc可以被路由到指定的shard上,通過下面的規則

shard_num = hash(_routing) % num_primary_shards
           

預設情況下,會使用 doc 的 _id 字段來參與路由規則,如果此doc有父子關系,則會以父親的_id作為路由規則,以確定父子資料 必須處于同一個shard上,以提高join效率

_ignored

elasticsearch 6.4之後添加元字段

_ignored 元字段索引和存儲文檔中由于ignore_malformed屬性被ignored 的每個字段的名稱。

其他

_meta

每個mapping type可以有不同的中繼資料類型,我們可以存儲自己定義認為的中繼資料中,此字段支援查詢和更新

參考

  • 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

繼續閱讀