Skip to content
📖0 阅读·🤍0 点赞

Elasticsearch 元数据与源数据详解

一、概述

对于 Elasticsearch (ES) 新手来说,理解返回数据中的元数据源数据 是关键的第一步。下图是一个典型的 ES 文档返回结果,我们可以通过一个生动的比喻来彻底理解它。

(图片说明:红色框内为元数据,绿色框内为源数据)


二、核心比喻:快递包裹

想象一下你在网上购物的过程,一个快递包裹正好对应 ES 返回的一个文档。

三、元数据

1. 它是什么?

元数据是 ES 系统为了管理数据而自动添加的信息,就像贴在你快递包裹上的快递单

2. 对应图片中的部分

图中红色方框内的部分就是元数据:

{
    "_index": "product",
    "_id": "1",
    "_version": 1,
    "_seq_no": 0,
    "_primary_term": 1,
    "found": true
}

3. 特点与解释

  • 系统生成:主要由 ES 自动创建和维护,用于追踪和管理文档。
  • 用于定位:就像你用“运单号”查询快递一样,你通过 _index(仓库名)和 _id(运单号)来唯一确定一个文档。
  • 系统维护_version(版本号)等信息由 ES 自动更新,用于控制并发修改。

4. 好比

快递单上的运单号、收货地址、仓库编号、包裹状态


四、源数据

1. 它是什么?

源数据是 你真正存入 ES 的业务数据,是你应用程序的核心,就像快递包裹里你购买的商品本身

2. 对应图片中的部分

图中绿色方框内的 _source字段就是源数据:

{
    "_source": {
        "name": "xiaomi phone",
        "desc": "shouji zhong de zhandouji",
        "price": 3999,
        "lv": "qijianji",
        "type": "phone",
        "createtime": "2020-10-01T08:00:00Z",
        "tags": ["xingjiabi", "fashao", "buka"]
    }
}

3. 特点与解释

  • 核心内容:你存入和搜索的目标就是这些数据。
  • 归你管:这些字段(name, price, tags等)完全由你的业务需求定义。
  • 可修改:你可以像更新商品信息一样,对这些字段进行增、删、改、查。

4. 好比

包裹里的手机、价格标签、说明书等商品信息。


五、核心区别总结

特性元数据源数据
创建者Elasticsearch 系统自动生成用户/程序员 定义和存入
作用系统内部用于管理、定位、版本控制存储真正的业务信息
可修改性大部分不能直接修改(如 _id可以任意增、删、改、查
类比物快递单包裹内的商品

六、结合图片再看一遍

现在,让我们结合开头的图片来最后一次加深理解:

  • _index: "product":这个“包裹”存放在名为 product(商品)的大仓库里。
  • _id: "1":这个商品在仓库里的唯一货架编号(运单号)。
  • _source: { ... }:这里面装的才是商品的真实信息(名称、价格、标签等)。

工作流程:当你想从 ES 中获取数据时,系统会根据元数据(快递单号 _id)快速定位到文档,然后将整个“包裹”(元数据 + 源数据)返回给你。你真正需要使用的是盒子里的“商品”(源数据),而“快递单”(元数据)则保证了整个过程的准确性和可管理性。