es(Elasticsearch) -- 元字段解析

简介

         Elasticsearch中每个文档都有自己的元数据,为了方便管理元数据,es提供元字段。元数据主要分为身份元数据、索引元数据、文档元数据、路由元数据以及其他类型的元数据 ,同时索引创建时我们还可以自定义元字段。本文将详细介绍不同元字段的用途和使用方式。

1.身份元数据

  • _index:文档所属索引 , 自动被索引,可被查询,聚合,排序使用,或者脚本里访问

  • _type:文档所属类型,自动被索引,可被查询,聚合,排序使用,或者脚本里访问

  • _id:文档的唯一标识,

    建索引时候传入 ,不被索引, 可通过_uid被查询,脚本里使用,不能参与聚合或排序

  • _uid:由_type和_id字段组成,自动被索引 ,可被查询,聚合,排序使用,或者脚本里访问

2.索引元数据

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

3.文档元数据

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

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参数的唯一性。

5. 其他

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

        

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿华田512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值