【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 获取,减少存储开销。
相关推荐
鸭鸭鸭进京赶烤5 小时前
大学专业科普 | 云计算、大数据
大数据·云计算
G皮T9 小时前
【Elasticsearch】自定义评分检索
大数据·elasticsearch·搜索引擎·查询·检索·自定义评分·_score
搞笑的秀儿12 小时前
信息新技术
大数据·人工智能·物联网·云计算·区块链
SelectDB12 小时前
SelectDB 在 AWS Graviton ARM 架构下相比 x86 实现 36% 性价比提升
大数据·架构·aws
二二孚日12 小时前
自用华为ICT云赛道Big Data第五章知识点-Flume海量日志聚合
大数据·华为
二二孚日14 小时前
自用华为ICT云赛道Big Data第四章知识点-Flink流批一体分布式实时处理引擎
大数据·华为
xufwind15 小时前
spark standlone 集群离线安装
大数据·分布式·spark
AI数据皮皮侠16 小时前
中国区域10m空间分辨率楼高数据集(全国/分省/分市/免费数据)
大数据·人工智能·机器学习·分类·业界资讯
昱禹17 小时前
Flutter 3.29+使用isar构建失败
大数据·flutter
DeepSeek大模型官方教程17 小时前
NLP之文本纠错开源大模型:兼看语音大模型总结
大数据·人工智能·ai·自然语言处理·大模型·产品经理·大模型学习