ElasticSearch 实战:ES的元字段 (_index、_type、_source、_routing等)

本文详细介绍了Elasticsearch中的关键元字段,如_index、_type(现已弃用)、_id、_source、routing和_version,以及它们在文档存储、检索和并发控制中的作用。
摘要由CSDN通过智能技术生成

在Elasticsearch中,元字段(Meta-fields)是系统自动为每一份文档添加的特殊字段,它们提供了有关文档存储和检索过程中的重要上下文信息。以下是一些主要的元字段以及它们的作用:

  1. _index: 指定文档存储所在的索引名称。这是文档在Elasticsearch集群中的逻辑分区。

    {
      "_index": "my_index"
    }
    
  2. _type: 在Elasticsearch 6.x之前,_type用于在同一索引内组织不同类型的数据。然而,从Elasticsearch 7.x开始,已经弃用了_type,所有的文档都归于单个类型,且默认类型为 _doc

    // 在ES 6.x及之前版本中
    {
      "_index": "my_index",
      "_type": "my_type"
    }
    
    // 在ES 7.x及以后版本中,已无_type字段
    {
      "_index": "my_index",
      "_id": "1"
    }
    
  3. _id: 表示文档的唯一标识符。每个文档在其所属的索引和类型(如果适用)下必须有一个唯一的ID。可以直接指定或由Elasticsearch自动生成。

    {
      "_index": "my_index",
      "_id": "unique_id_here",
      // ...
    }
    
  4. _source: 包含了原始文档内容的字段。它是文档的实际数据,可以被检索、返回给客户端。

    {
      "_index": "my_index",
      "_id": "1",
      "_source": {
        "title": "Example Title",
        "content": "This is the content of the example document.",
        // 其他字段...
      }
    }
    
  5. _routing: 可选的路由键,用于确定文档应存储在哪个分片上。它可以帮助优化请求路由和查询性能,特别是在涉及parent-child关系或某些特定的定制路由策略时。

    PUT my_index/_doc/1?routing=user_id
    {
      "user_id": "user123",
      "content": "..."
    }
    
  6. _version: 每次文档更新都会增加的版本号,用于实现乐观并发控制(Optimistic Concurrency Control),确保在并发环境下进行安全的更新和删除操作。

  7. _score: 在执行查询时,Elasticsearch会给每个匹配文档计算一个相关度得分,这个得分存储在_score字段中,用于排序结果。

  8. 其他元字段还包括:_timestamp(已废弃)、_ttl(已废弃,在7.x版后不再支持)、_field_names_all(在6.x版后默认禁用)等。

实战中,这些元字段会在文档的CRUD操作中频繁出现,比如在创建文档时指定_index_id,在查询时利用_routing进行高效查询,或者在获取文档时查看_source的内容和_version来确保数据一致性。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值