【Elasticsearch】stored_fields

在 Elasticsearch 中,`stored_fields` 是一个非常重要的概念,主要用于控制文档存储和检索时的行为。以下是对 `stored_fields` 的详细解释:

 

1\. `stored_fields` 的作用

 

`stored_fields` 用于指定在检索文档时需要返回的字段。默认情况下,Elasticsearch 在索引文档时会将所有字段存储在 `_source` 中,而 `_source` 是一个 JSON 格式的字段,包含了完整的文档内容。但是,有时我们并不需要检索整个 `_source`,而是只需要某些特定字段。通过设置 `stored_fields`,可以优化检索性能和存储空间。

 

2\. 使用场景

 

- 优化性能:如果只需要检索文档中的某些字段,而不是整个 `_source`,设置 `stored_fields` 可以减少数据传输量,从而提高检索性能。

- 节省存储空间:在某些情况下,某些字段可能不需要存储,或者只需要存储部分字段用于检索,这样可以节省磁盘空间。

- 提高安全性:在某些场景下,某些字段可能包含敏感信息,通过设置 `stored_fields`,可以避免这些字段被检索或返回。

 

3\. 如何设置 `stored_fields`

 

在索引映射中设置

 

在创建索引时,可以通过映射(mapping)来指定哪些字段需要存储。例如:

 

```json

PUT /my_index

{

  "mappings": {

    "properties": {

      "field1": {

        "type": "text",

        "store": true // 设置为 true 表示存储该字段

      },

      "field2": {

        "type": "keyword",

        "store": false // 设置为 false 表示不存储该字段

      }

    }

  }

}

```

 

- `store: true` 表示该字段会被单独存储,可以在检索时通过 `stored_fields` 参数返回。

- `store: false` 表示该字段不会被单独存储,只能通过 `_source` 获取。

 

在检索时使用 `stored_fields` 参数

 

在查询文档时,可以通过 `stored_fields` 参数指定需要返回的字段。例如:

 

```json

GET /my_index/_search

{

  "query": {

    "match_all": {}

  },

  "stored_fields": ["field1", "field2"] // 指定返回的字段

}

```

 

如果字段被设置为 `store: true`,则可以通过 `stored_fields` 参数返回该字段的值。如果字段没有被存储(`store: false`),则无法通过 `stored_fields` 返回,只能通过 `_source` 获取。

 

4\. `stored_fields` 与 `_source` 的区别

 

- 存储方式:

  - `_source` 是一个 JSON 格式的字段,包含完整的文档内容,存储在 Lucene 的 `_source` 字段中。

  - `stored_fields` 是单独存储的字段,存储在 Lucene 的存储字段中,可以单独检索。

- 检索性能:

  - 检索 `_source` 时,需要解析整个 JSON 数据,性能相对较低。

  - 检索 `stored_fields` 时,直接返回存储的字段值,性能更高。

- 适用场景:

  - `_source` 适用于需要完整文档内容的场景,例如更新文档、重新索引等。

  - `stored_fields` 适用于只需要部分字段的场景,例如快速检索某些字段的值。

 

5\. 注意事项

 

- 存储成本:虽然 `stored_fields` 可以提高检索性能,但存储字段会占用额外的磁盘空间。因此,需要根据实际需求合理选择存储的字段。

- 字段类型:某些字段类型(如 `text` 类型的字段)在存储时会占用较多空间,需要谨慎使用。

- 更新字段:如果需要更新存储的字段,需要重新索引文档,因为存储的字段在文档索引后无法直接修改。

 

通过合理使用 `stored_fields`,可以优化 Elasticsearch 的性能和存储效率,满足不同的检索需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 | 1.1 计算机网络概述思维导图

附大纲: 计算机网络的概念 一个通过通信设备与线路把不同计算机系统连接起来,实现资源共享和信息传递的系统 计算机网络的组成 从组成成分上 硬件:主机、通信链路、交换设备、通信处理机软件:网络操作系统、聊天软件等协议&…

HOW - 简历和求职面试宝典(三)

文章目录 1. 面试邀约2. 开始面试和自我介绍第一、面试前的准备工作第二、如何全面地介绍自己1. 面试邀约 第一、先认识日常HR 的工作流程 首先,电话沟通是 HR 核心工作内容的一部分。电话沟通分为两种:一种是电话预约;另外一种是电话确认。 电话预约很清晰,就是确认面试…

Java基础 Day24

一、进程和线程 1、进程 (1)概念 进程 (Process) 是计算机中的程序关于某数据集合上的一次运行活动 是系统进行资源分配的基本单位 简单理解:程序的执行过程(正在运行的应用程序) (2)特性…

C#学习:基于LLM的简历评估程序

前言 在pocketflow的例子中看到了一个基于LLM的简历评估程序的例子,感觉还挺好玩的,为了练习一下C#,我最近使用C#重写了一个。 准备不同的简历: 查看效果: 不足之处是现实的简历应该是pdf格式的,后面可以…

git怎么合并两个分支

git怎么合并分支代码 注意: 第一步你得把当前分支合到远程分支去才能有下面的操作 另外我是将develop分支代码合并到release分支去 git 命令 查看本地所有分支 git branch切换分支 例如切换到release分支 git checkout release拉取代码 git pull up release 合并分支 …

Android-kotlin协程学习总结

Kotlin协程实战对话​ ​真题1:协程与线程的本质区别是什么?为什么说协程是轻量级的?​​ ​面试官​: “我看你项目中用协程替代了线程池,能说说协程和线程的核心区别吗?为什么协程更适合高并发&#xf…

uni-app学习笔记十四-vue3中emit的使用

在组件传值中&#xff0c;无论是props还是slot都是单向数据流&#xff0c;父组件向子组件传值&#xff0c;子组件不能直接对父组件传过来的值进行重新赋值。 下面学习子组件向父组件传值的工具--emit。 在子组件emit设置传递的函数名和值 <template><view>子组件…

Java设计模式从基础到实际运用

第一部分&#xff1a;设计模式基础 1. 设计模式概述 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结&#xff0c;它描述了在软件设计过程中一些不断重复出现的问题以及该问题的解决方案。设计模式是在特定环境下解决软件设计问题…

鸿蒙OSUniApp 制作自定义的进度条组件#三方框架 #Uniapp

使用 UniApp 制作自定义的进度条组件 在移动应用开发中&#xff0c;进度条是非常常见的 UI 组件&#xff0c;无论是文件上传、下载、任务进度还是表单填写反馈&#xff0c;进度条都能为用户提供直观的进度提示。虽然 UniApp 提供了一些基础的进度条能力&#xff0c;但在实际项…

Python爬虫实战:研究Beautiful Soup框架相关技术

1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何从海量的网页数据中高效提取有价值的信息,成为信息科学领域的重要研究课题。网络爬虫作为一种自动获取网页内容的技术,能够按照预设规则遍历互联网并采集数据,为信息检索、舆情分析、商…

【Tips】关于PCI和PCIe的配置空间差异和io/memory io读写

最近在看同事2023年讲的PCI基础课&#xff0c;感觉确实是豁然开朗了&#xff0c;赞美同事。 PCIe实际上是PCI的扩展&#xff08;extended&#xff09;&#xff0c;PCIe设备相当于是迭代升级产品。 而PCIe的配置空间基于PCI原有的0xFF&#xff08;256字节&#xff09;配置空间…

桂花网体育运动监测方案:开启幼儿园运动健康管理新篇章

在幼儿教育领域&#xff0c;运动能力的培养与健康监测始终是备受关注的核心环节。随着科技的飞速发展&#xff0c;如何科学、有效地监测幼儿的运动状态&#xff0c;成为了幼儿园教育者面临的一大挑战。桂花网体育运动监测方案凭借其高效、精准、智能化的特性&#xff0c;为幼儿…

Perforce P4产品简介:无限扩展+全球协作+安全管控+工具集成(附下载)

本产品简介由Perforce中国授权合作伙伴——龙智编辑整理&#xff0c;旨在带您快速了解Perforce P4版本控制系统的强大之处。 世界级无限可扩展的版本控制系统 Perforce P4&#xff08;原Helix Core&#xff09;是业界领先的版本控制平台&#xff0c;备受19家全球Top20 AAA级游…

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS

目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风…

安全访问 std::tuple 的容错方法及气象领域应用

安全访问 std::tuple 的容错方法及气象领域应用 1. std::tuple 安全访问的核心问题 1.1 元组结构性问题&#xff08;编译时错误&#xff09; 当元组元素数量为空时&#xff08;std::tuple<>&#xff09;&#xff0c;任何访问元素的尝试都会导致编译错误​&#xff1a;…

Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)

目录 一、源码分析 1.分析闭合 2.分析输出 &#xff08;1&#xff09;查询成功 &#xff08;2&#xff09;查询失败 &#xff08;3&#xff09;SQL语句执行报错 二、第03关 延时注入 1.打开靶场 2.SQL手注 &#xff08;1&#xff09;盲注分析 &#xff08;2&#xf…

【大模型学习网络互联】Memory-Mapped I/O MMIO语义与MEM语义

MMIO语义和MEM语义的区别 嗯&#xff0c;用户要求更详细地区分MMIO和MEM语义&#xff0c;看来之前的中文对比虽然系统但还不够深入。用户可能是嵌入式开发者或OS内核学习者&#xff0c;需要从硬件行为层面理解差异。 用户连续追问MMIO相关概念&#xff0c;说明ta在接触底层开发…

如何在使用kickstart安装物理机操作系统的过程中核对服务器的SN

原因 在使用kickstart对物理机进行重装的时候&#xff0c;由于自动化配置&#xff0c;挂载镜像重启之后就会自动化开始安装部署&#xff0c;不够安全&#xff0c;万一选错服务器没有办法回退。因此可以在kickstart的ks配置文件中新增服务器SN的校验&#xff0c;当校验不通过的…

spring4第4课-ioc控制反转-详解如何注入参数

坚持住&#xff0c;第四天&#xff0c;继续学习spring4.详解如何注入参数 先总结&#xff0c;主要有如下6种&#xff1a; 1&#xff0c;基本类型值&#xff1b; 2&#xff0c;注入 bean&#xff1b; 3&#xff0c;内部 bean&#xff1b; 4&#xff0c;null 值&#xff1b; 5&…

cf2067A

原题链接&#xff1a;https://codeforces.com/contest/2067/problem/A 题目背景&#xff1a; 给定x,y&#xff0c;判读是否存在 n 满足S(n) x&#xff0c;S(n 1) y。定义 S(a) 等于 a 的十进制位数之和。 思路&#xff1a; 不难发现一般 n 和 n 1 的位数之和相差为 1&…