在 Elasticsearch 中删除文档中的某个字段

作者:来自 Elastic Kofi Bartlett

探索在 Elasticsearch 中删除文档字段的方法。

更多有关 Elasticsearch 文档的操作,请详细阅读文章 “开始使用 Elasticsearch (1)”。

想获得 Elastic 认证?查看下一期 Elasticsearch Engineer 培训的时间!

Elasticsearch 拥有大量新功能,帮助你为你的使用场景构建最佳搜索解决方案。查看我们的示例 notebooks 了解更多内容,开始免费的云端试用,或现在就在本地机器上体验 Elastic。


在 Elasticsearch 中,从文档中删除字段是一个常见需求。当你想从索引中移除不必要或过时的信息时,这会很有用。本文将讨论在 Elasticsearch 中删除文档字段的不同方法,并附带示例和逐步说明。

方法一:使用 Update API

Update API 允许你通过提供脚本来更新文档的内容。你可以使用该 API 将字段设置为 null,或者更好地,直接从文档中删除该字段。以下是执行此操作的分步指南:

  1. 确定你要更新的文档的索引、文档类型(如果使用的是 Elasticsearch 6.x 或更早版本)和文档 ID。

  2. 使用 Update API,并提供一个脚本,该脚本将字段设置为 null,或直接从文档中移除该字段。以下示例演示了如何从索引为 my_index,ID 为 1 的文档中删除名为 field_to_delete 的字段:

    POST /my_index/_update/1
    {"script": {"source": "ctx._source.remove('field_to_delete')","lang": "painless"}
    }
    
  3. 执行请求。如果成功,Elasticsearch 会返回一个响应,表示文档已被更新。

注意:此方法只会从指定文档中移除字段。该字段仍然会存在于映射和索引中的其他文档中。

方法二:使用修改后的源数据进行重新索引

如果你想从索引中的所有文档中删除一个字段,可以使用 Reindex API 创建一个带有修改后源数据的新索引。操作如下:

  1. 创建一个与原始索引具有相同设置和映射的新索引。你可以使用 Get Index API 获取原始索引的设置和映射。

  2. 使用 Reindex API 将文档从原始索引复制到新索引,同时从源中移除该字段。以下示例演示了如何从 “my_index” 索引中的所有文档中删除 “field_to_delete” 字段:

    POST /_reindex
    {"source": {"index": "my_index"},"dest": {"index": "new_index"},"script": {"source": "ctx._source.remove('field_to_delete')"}
    }
  3. 验证新索引中是否包含已删除该字段的正确文档

  4. 如果一切正常,你可以删除原始索引,并在需要时为新索引添加一个别名,使其名称与原始索引相同。

方法三:更新映射并重新索引

如果你想从映射和索引中的所有文档中删除一个字段,可以更新映射并重新索引文档。操作如下:

  1. 创建一个与原始索引具有相同设置的新索引。

  2. 使用 Get Mapping API 获取原始索引的映射。

  3. 修改映射,移除你想删除的字段。

  4. 使用 Put Mapping API 将修改后的映射应用到新索引。

  5. 使用 Reindex API 将文档从原始索引复制到新索引,方式同方法二。

  6. 验证新索引是否包含已删除该字段的正确文档,且该字段不再出现在映射中。

  7. 如果一切正常,你可以删除原始索引,并在需要时为新索引添加一个别名,使其名称与原始索引相同。

结论

本文讨论了在 Elasticsearch 中删除文档字段的三种方法:使用 Update API、通过修改后的 source 重新索引,以及更新映射后重新索引。每种方法都有其适用场景和权衡,请根据实际需求选择合适的方法。在应用到生产环境之前,请务必测试你的变更并验证结果。

原文:Deleting a field from a document in Elasticsearch - Elasticsearch Labs

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

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

相关文章

元数据和主数据

元数据和主数据是数据管理中的两个关键概念,其核心区别如下: 1. 定义与本质 元数据(Metadata) “关于数据的数据”,用于描述数据的属性、结构、来源、用途等上下文信息。 示例:数据库表的字段名称、数据类型…

java的Stream流处理

Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象,它允许你以声明式方式处理数据集合(类似于 SQL 语句),支持并行操作,提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…

llama-Factory不宜直接挂接Ollama的大模型

前言 llama-Factory尝试使用Ollama本地安装的大模型。 一、在Ollama中安装QWen 安装qwen:0.5b 安装完成了: 同理安装qwen2.5:0.5b 安装完毕后,再用ollama list进行查看: 我们在chatbox中进行查看: 说明这两个大模型,…

基于WSL用MSVC编译ffmpeg7.1

在windows平台编译FFmpeg,网上的大部分资料都是推荐用msys2mingw进行编译。在win10平台,我们可以采用另一种方式,即wslmsvc 实现window平台的ffmpeg编译。 下面将以vs2022ubuntu22.04 为例,介绍此方法 0、前期准备 安装vs2022 &…

vue3+vite项目引入tailwindcss

从2025年1月tailwindcss4.0发布开始使用tailwindcss比之前简化很多 1,安装 yarn add tailwindcss tailwindcss/vite2,配置vite.config.js import tailwindcss from tailwindcss/vite;...plugins: [tailwindcss(),...] ...3,在主css文件顶部添加 注意一定是css文件,不能是sc…

蓝牙RFCOMM协议概述

RFCOMM概述 概念 RFCOMM 协议提供了对 L2CAP 协议上的串行端口的模拟。该协议基于 ETSI 标准 GSM 07.10。 RFCOMM 采用与 TS07.10 相同的字节序列方式。所有二进制数字都按照从低位到高位的顺序,从左至右读。 两个使用RFCOMM通信的蓝牙设备可以打开多个仿真串行端…

[工具]B站缓存工具箱 (By 郭逍遥)

📌 项目简介 B站缓存工具箱是一个多功能的B站缓存工具,包含视频下载、缓存重载、文件合并及系统设置四大核心功能。基于yutto开发,采用图形化界面操作,极大简化B站资源获取与管理流程。 工具可以直接将原本缓存的视频读取&#…

算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度

递归 递归三部曲: 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法: 递归,对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…

sunset:Solstice靶场

sunset:Solstice https://www.vulnhub.com/entry/sunset-solstice,499/ 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.244 3&#xff…

AZScreenRecorder最新版:功能强大、操作简便的手机录屏软件

AZScreenRecorder最新版是一款功能强大的手机录屏软件,专为安卓设备设计。它无需ROOT权限,支持无限录制时长,操作简单,录制过程中可以随时暂停,满足不同用户的个性化录屏需求。此外,用户还可以自定义分辨率…

模块自动导入的小工具

import { ref, reactive, onMounted } from vue import { useRoute, useRouter } from vue-router项目里很多文件都需要引入这些公共库,比较繁琐,使用一个小工具可以自动导入,就不需要在每个文件里面都写这些导入的代码了。 通过命令行下载安…

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关 前言01 逻辑与开关 前言 我是一名光学工程专业研二的学生,目前正处于找工作的阶段,根据往年师兄师姐找工作的情况,在西安这个城市不出意外我能找到的应该就是嵌入…

TXT编码转换工具iconv

iconv.exe是实现TXT编码转换的命令行工具,支持几百种编码格式的转换,利用它可以在自主开发程序上实现TXT文档编码的自动转换。 一、命令参数格式 Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...] or: iconv -l 二、转换的示例 将UTF-8…

软考中级数据库备考-上午篇

背景 新工作主要做大数据平台,考一个软考中级数据库系统工程师,补足一下基础知识。 基础知识 1.计算机硬件基础知识 正确答案:C 正确答案:D 正确答案:C 正确答案:BC 正确答案:B 正确答案:D 正确答案:A DMA建立内存与外设的直接…

AtCoder AT_abc405_d ABC405D - Escape Route

前言 BFS 算法在 AtCoder 比赛中还是会考的,因为不常练习导致没想到,不仅错误 TLE 了很多,还影响了心态,3 发罚时后才 AC。 思路 首先,我们把所有位置和出口的距离算出来(用 BFS)&#xff0c…

【计算机视觉】目标检测:yoloV1~yoloV11项目论文及对比

以下是 YOLO (You Only Look Once) 系列模型从 V1 到 V11 的详细介绍和项目地址(截至2024年7月)。YOLO 是目标检测领域的里程碑模型,以其 实时性 和 高精度 著称,广泛应用于自动驾驶、安防监控、工业检测等领域。 YOLOv1 (2016) …

推荐系统架构设计

1.分析用户行为数据​:​ 收集用户的活跃时间、点击行为、浏览历史等数据。​分析用户的活跃模式,确定用户最活跃的时间段。​kafka flink 数据库 分析用户行为并存储 2. 预生成推荐内容​:​ 在用户活跃时间之前,预先生成推荐…

BERT类模型

1. BERT类模型是否需要处理 [CLS] 或池化? 那首先搞懂 [CLS] 和池化 (1)[CLS] 的作用 BERT 的输入格式中,每个序列的开头会添加一个特殊的 [CLS] Token(Classification Token)。它的设计初衷是为分类任务…

我的世界云端服务器具体是指什么?

我的世界云端服务器是指一种基于互联网的多人游戏服务器,将游戏服务器运行在云平台上,而不是在本地计算机中,这使用户不需要考虑自身电脑的性能和网络稳定性,只需要通过网络连接到云端服务器,就可以享受到顺畅的游戏体…

软考(信息系统运行管理员)

第一章 信息系统运维概述 1.1 信息系统概述 信息的含义和类型 信息的含义: 一般:人们关心的事情的消息或知识。香农(信息论创始人):用来减少随机不确定性的东西(标志着信息科学进入定量研究阶段&#xff…