Elasticsearch之元数据(meta-fields)介绍

1. 什么是meta-fields

在Elasticsearch下,一个文档除了有数据之外,它还包含了元数据(Metadata)。每创建一条数据时,都会对元数据进行写入等操作,当然有些元数据是在创建mapping的时候就会设置,

它里面定义了每个添加的doc的处理方式。 类似于数据库的表结构数据。

2. 有哪些meta-fields

ES中元数据大体分为五中类型:身份元数据、索引元数据、文档元数据、路由元数据以及其他类型的元数据

2.1. 身份元数据

  • _index:文档所属索引 , 自动被索引,可被查询,聚合,排序使用,或者脚本里访问
  • _type:文档所属类型,自动被索引,可被查询,聚合,排序使用,或者脚本里访问
  • _id:文档的唯一标识, 建索引时候传入 ,不被索引, 可通过_uid被查询,脚本里使用,不能参与聚合或排序
  • _uid:由_type和_id字段组成,自动被索引 ,可被查询,聚合,排序使用,或者脚本里访问

2.2. 索引元数据

  • _all: 自动组合所有的字段值,以空格分割,可以指定分器词索引,但是整个值不被存储,所以此字段仅仅能被搜索,不能获取到具体的值
  • _field_names:索引了每个字段的名字,可以包含null值,可以通过exists查询或missing查询方法来校验特定的字段
  • _timestamp:可以手工指定时间戳值,也可以自动生成使用now()函数,除此之外还可以设置日期的格式化,忽略确实等功能
  • _ttl:对于一些会话数据或者验证码失效时间,一般来说是有生命周期的,在es中可以很方便的通过这个ttl来设置存活时间,比如1小时,或者10分钟,在超时过后,这个doc会被自动删除,这种方式并不适合按周或按天删除历史数据,如果是这种需求,可考虑使用索引级别的管理方式

2.3. 文档元数据

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

2.4. 路由元数据

  • _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效率

需要注意的是如果指定了使用自己的路由规则,如果两个文档_id参数一样,但是路由规则值不一样,有可能造成这两条数据被分发到不同的shard,所以在使用自己的路由规则时

注意_id参数的唯一性。

2.5. 其他

  • _meta:每个mapping type可以有不同的元数据类型,我们可以存储自己定义认为的元数据中,此字段支持查询和更新

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


个人介绍: 高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

进击的爬虫:用Python搭建匿名代理池

專 欄 ❈ 苍冥,Python中文社区专栏作者,澳洲华裔,目前在墨尔本某国际咨询公司任职Splunk Developer,擅长网络安全及攻防,热爱Python...

3745
来自专栏晨星先生的自留地

面试中遇到的坑之mysql注入入门

2424
来自专栏祝威廉

ElasticSearch QueryCache漫谈

这些天在做ES调优,因为之前更多的是考虑ES的架构和可运维性,并没有过多关注query调优这块。今天一查Query Cache相关的内容,发现是少之又少。于是自...

1722
来自专栏nnngu

Hibernate的关联映射

首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系型数据库中表的数据映射成对象...

2905
来自专栏互联网高可用架构

初识分库分表框架DBSPLIT

1774
来自专栏乐沙弥的世界

MySQL Utilities工具包概述及安装

2581
来自专栏信安之路

SQL 注入类型详解

笔者最初学习 SQL 注入时,大家对于 SQL 注入类型的归类让我头脑一片混乱,后来笔者发现其实大家都是根据 sqlmap 上给出的“类型”来划分的。所以,今天...

3830
来自专栏钱曙光的专栏

MySQL 8 新特性介绍

广受欢迎的开源数据库MySQL 8中,包括了众多新特性,其中包括对Unicode更好的支持、对JSON格式和文档的处理,以及一直以来呼吁增加的象window函数...

5580
来自专栏智能大石头

充血模型的ORM能做什么?——ORM组件XCode(十八般武艺)

ORM组件XCode(十八般武艺) 之前,XCode总是若隐若现,耐性好的同学想知道它还有啥特点,沉不住气的则认为不过是CURD耳! XCode开发模式是灵魂,...

2009
来自专栏程序猿

SQL注入与XSS漏洞

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求 的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 站泄...

5985

扫码关注云+社区

领取腾讯云代金券