【Elasticsearch】映射:详解 _source & store 字段

映射:详解 _source & store 字段

  • [1._source 字段](#1._source 字段)
    • [1.1 特点](#1.1 特点)
    • [1.2 示例](#1.2 示例)
  • [2.store 字段](#2.store 字段)
    • [2.1 特点](#2.1 特点)
    • [2.2 示例](#2.2 示例)
  • 3.两者对比
    • [3.1 使用建议](#3.1 使用建议)
    • [3.2 实际应用示例](#3.2 实际应用示例)

1._source 字段

_source 是 Elasticsearch 中一个特殊的元字段,它存储了文档在索引时的原始 JSON 内容。

1.1 特点

  • 默认启用 :所有文档都会自动存储原始 JSON 数据在 _source 中。
  • 完整存储:保存文档的完整原始结构。
  • 重要用途
    • 返回搜索结果中的原始文档内容。
    • 支持高亮显示。
    • 支持重新索引操作。
    • 支持更新文档(因为需要原始内容)。

1.2 示例

json 复制代码
PUT my_index/_doc/1
{
  "title": "Elasticsearch Guide",
  "author": "John Doe",
  "content": "This is a comprehensive guide..."
}

GET my_index/_doc/1

返回结果中会包含完整的 _source 内容。

禁用 _source

json 复制代码
PUT my_index
{
  "mappings": {
    "_source": {
      "enabled": false
    }
  }
}

禁用后无法获取原始文档内容,且某些功能将不可用。

2.store 字段

store 是字段级别的属性,决定是否将字段值单独存储在 Lucene 中(独立于 _source)。

2.1 特点

  • 默认关闭:大多数情况下不需要单独存储字段。
  • 特定场景使用
    • 当只需要检索个别字段,而不需要整个 _source 时。
    • _source 被禁用,但仍需要某些字段时。
  • 存储方式:以列式存储,单独存储。

2.2 示例

json 复制代码
PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "store": true 
      },
      "content": {
        "type": "text"
      }
    }
  }
}

检索存储字段。

json 复制代码
GET my_index/_search
{
  "stored_fields": ["title"] 
}

3.两者对比

特性 _source 字段 store 属性
存储级别 文档级(整个原始文档) 字段级(单个字段)
默认值 启用 禁用
存储方式 原始 JSON 单独列式存储
主要用途 获取完整文档、重新索引、更新等操作 高效检索特定字段
存储开销 较高(存储完整文档) 较低(只存储指定字段)
检索方式 通过 _source 获取 通过 stored_fields 获取

3.1 使用建议

  • 大多数情况 :保持 _source 启用,不需要设置 store: true
  • 禁用 _source :对需要检索的字段设置 store: true
  • 性能优化:当文档很大但只需要少量字段时,可考虑存储特定字段。
  • 注意:存储字段会增加索引大小,应谨慎使用。

3.2 实际应用示例

json 复制代码
PUT news_articles
{
  "mappings": {
    "_source": {
      "enabled": true
    },
    "properties": {
      "headline": {
        "type": "text",
        "store": true
      },
      "body": {
        "type": "text"
      },
      "publish_date": {
        "type": "date",
        "store": true
      }
    }
  }
}

这样设计可以:

  • 通过 _source 获取完整文章内容。
  • 快速单独访问 headlinepublish_date 字段(如用于列表展示)。
  • body 内容只通过 _source 获取,减少存储开销。
相关推荐
大模型码小白11 分钟前
数据可视化:AI处理多维数据的HTML5可视化方案
大数据·前端·javascript·人工智能·机器学习·信息可视化·html5
cxk180827221 分钟前
2026 年9月 AI 营销机构选型方法论:基于 GEO 精采信模式的三维评估体系
大数据·人工智能·科技·ai·geo·昆明geo
Elastic 中国社区官方博客27 分钟前
不再有分配延迟:在无状态 Elasticsearch 中将快照与分片迁移解耦
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索
Python 实战手记1 小时前
2026 企业微信主体变更公证办理指南:场景条件、材料清单、线上实操流程
大数据·人工智能·企业微信
用户3610588626121 小时前
SparkStreaming 之配置参数详解
大数据·spark
幂律智能1 小时前
穿透到合同,管控到付款
大数据·人工智能
PcVue China2 小时前
智控能耗,数驱能效 | PcVue线上研讨会进行中!
大数据·人工智能·能源·制造·直播·scada·pcvue17
人工智能时代 准备好了吗2 小时前
同名实体消歧:地区、公司主体、官网和品类是关键消歧信息
大数据·人工智能
ltqvibe2 小时前
数据很脏,能不能上AI问数
大数据·人工智能·数据治理·智能问数·ai问数·本体语义·数据口径