Elasticsearch权威指南:文档(Document)核心概念解析

Elasticsearch权威指南:文档(Document)核心概念解析

elasticsearch-definitive-guide The Definitive Guide to Elasticsearch elasticsearch-definitive-guide 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-definitive-guide

什么是文档?

在Elasticsearch中,文档(Document)是最基本的数据单元,可以将其理解为一个独立的JSON对象。文档由键值对组成,其中键是字段名,值可以是多种数据类型:

  • 字符串(如"John Smith")
  • 数字(如42)
  • 布尔值(如true)
  • 对象(如嵌套的"home"对象)
  • 数组(如"accounts"数组)
  • 特殊类型(如日期字符串"2014-06-01")

一个典型的文档示例如下:

{
    "name": "John Smith",
    "age": 42,
    "confirmed": true,
    "join_date": "2014-06-01",
    "home": {
        "lat": 51.5,
        "lon": 0.1
    },
    "accounts": [
        {"type": "facebook", "id": "johnsmith"},
        {"type": "twitter", "id": "johnsmith"}
    ]
}

重要说明

  • 字段名可以是任何有效字符串,但不能包含英文句点(.)
  • 文档与普通JSON对象的区别在于,文档是Elasticsearch中的顶级对象,具有唯一ID标识

文档元数据

每个文档除了包含实际数据外,还有描述文档本身的元数据(Metadata),其中最重要的三个元数据是:

1. _index(索引)

索引是文档的逻辑容器,用于将相关文档组织在一起。例如:

  • 产品数据存储在products索引
  • 销售记录存储在sales索引

技术细节

  • 索引名称必须小写,不能以下划线开头,不能包含逗号
  • 实际上索引由多个分片(Shard)组成,但对应用透明
  • 示例:我们可以使用"website"作为索引名

2. _type(类型)

类型用于在索引内进一步分类文档。例如:

  • 在products索引中,可以有electronics、kitchen等类型

类型命名规则

  • 可以包含大小写字母
  • 不能以下划线或句点开头
  • 不能包含逗号
  • 长度不超过256个字符
  • 示例:我们可以使用"blog"作为类型名

3. _id(文档ID)

文档ID是文档的唯一标识符,与_index和_type共同确定一个文档的唯一位置:

  • 可以自定义ID
  • 也可以让Elasticsearch自动生成

文档存储原理

当文档被索引时:

  1. Elasticsearch会为文档分配一个唯一ID(如果未提供)
  2. 根据索引和类型设置,文档会被路由到特定分片
  3. 文档内容会被分析并建立倒排索引
  4. 原始JSON会被存储以便检索

最佳实践

  • 相关文档应该放在同一个索引中
  • 同一索引中不同类型的文档应具有相似结构
  • 避免在索引中存储完全不相关的数据

理解文档的这些核心概念是使用Elasticsearch的基础,后续我们将深入探讨如何创建、查询和管理这些文档。

elasticsearch-definitive-guide The Definitive Guide to Elasticsearch elasticsearch-definitive-guide 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-definitive-guide

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程倩星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值