Elasticsearch新增和删除索引中的字段

news2024/9/22 0:57:11

在ES中,增加字段相对比较容易,因为ES支持动态映射(Dynamic Mapping)。
当索引中新增文档时,ES可以根据文档中的字段自动创建对应的映射关系。如果新字段类型与已有字段类型不同,ES会自动将已有字段类型转换为新类型。

而删除字段则比较困难,因为ES的索引是基于倒排索引的。
当一个字段被索引后,它就会被写入到倒排索引中。
如果删除该字段,就需要删除所有文档中该字段对应的倒排索引,这个过程非常耗时和复杂。
另外,如果删除了一个字段,可能会影响已有的查询和聚合操作,因为这些操作可能依赖于该字段。

因此,在ES中删除字段不是一个常见的操作,通常需要通过创建新的索引来实现。
可以通过创建新的索引并将数据导入新索引的方式来实现增删字段的需求。
虽然这种方式需要重新建立索引,但可以保证数据的完整性和一致性。

简单说,ES实现字段删除的步骤,就是把原索引中除要删除的索引字段外的所有属性,复制到一个新索引上,然后删除就索引,再重建旧索引(没有要删除的字段),然后再把新索引的所有属性,复制到新建的旧索引上。

1、新建索引my_temp_index

2、索引my_temp_index插入一条数据

3、索引my_temp_index查询数据

4、假设要删除的字段是picture_url,先把这个字段的内容删除

注意:
只是删除数据,不是删除字段
如果不删除字段数据,后面reindex时依然会把待删除字段的值带到新索引,即使设置新索引的dynamic为false

4、新建索引my_temp_index_new,不包含picture_url字段

5、同步数据,将my_temp_index旧索引的数据,同步到新索引my_temp_index_new中。注意,这个同步操作前,一定要确保旧索引my_temp_index的picture_url属性是没有值的。否则,这个同步过程,会把picture_url字段带到新索引上

6、验证效果,查询新索引my_temp_index_new映射关系与新索引数据

7、删除原索引

8、新建一个名为原索引名的索引my_temp_index,reindex同步数据,然后删除步骤4新建的索引my_temp_index_new

以上步骤,涉及到的命令如下:


get /my_temp_index/_mapping

get /my_temp_index_new/_mapping


DELETE /my_temp_index
DELETE /my_temp_index_new

PUT /my_temp_index
{
	"settings": {
		"number_of_shards": 5,
		"number_of_replicas": 1
	},
	"mappings": {
		"_doc": {
			"properties": {
				"commodity_id": {
					"type": "long"
				},
				"commodity_name": {
					"type": "text"
				},
				"picture_url": {
					"type": "keyword"
				},
				"price": {
					"type": "double"
				}
			}
		}
	}
}

PUT /my_temp_index_new
{
	"settings": {
		"number_of_shards": 5,
		"number_of_replicas": 1
	},
	"mappings": {
		"_doc": {
			"properties": {
				"commodity_id": {
					"type": "long"
				},
				"commodity_name": {
					"type": "text"
				},
				"price": {
					"type": "double"
				}
			}
		}
	}
}

POST /_reindex
{
    "source": {
        "index": "my_temp_index"
    },
    "dest": {
        "index": "my_temp_index_new"
    }
}

GET my_temp_index/_search
{
  "query": {
    "match_all": {}
  }
}

GET my_temp_index_new/_search
{
  "query": {
    "match_all": {}
  }
}


get my_temp_index/_mapping

post /my_temp_index/_doc
{
  "commodity_id":1,
  "commodity_name":"xxx1",
  "picture_url":"actress",
  "price": 999.00
}


POST  /my_temp_index/_update_by_query
{
    "script": {
        "lang": "painless",
        "inline": "ctx._source.remove(\"picture_url\")"
    },
    "query": {
        "match_all": {}
    }
}

参考【es】Elasticsearch新增和删除索引中的字段 - 简书

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

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

相关文章

2024-2025年最值得选的Java计算机毕业设计选题大全:800个热门选题

一、前言 博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ…

选择排序(附动图)

1.思路 基本思想: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 1.1双向选择排序(升序) 头尾指针(索引&#xf…

Excel求和方法之

一 SUM(),选择要相加的数,回车即可 二 上面的方法还不够快。用下面这个 就成功了 三 还有一种一样快的 选中之后,按下Alt键和键(即Alt)

三种生成模型

三种生成模型(GAN,VAE,FLOW) 什么是生成模型? 图像、文本、语音等数据,都可以看做是从一个复杂分布中采样得到的。 一个简单的分布随机分布,经过一系列复杂的变换(Generator)之后变成复杂分布. 从简单分布中随机采样一个z,经过G后…

新版本源2.0大模型发布:Yuan2-2B-July-hf

​ 引言 近日,浪潮信息的新一代基础语言大模型源2.0 迎来了重要更新。浪潮信息正式发布了 Yuan2-2B-July-hf 模型,标志着源2.0系列模型在性能和功能上的进一步提升。这一版本将为开发者和研究人员提供更强大的工具,以满足各种语言处理需求。…

武汉流星汇聚:携手亚马逊,全球电商中破浪前行,跨境业务加速崛起

在全球电商的浩瀚星空中,亚马逊无疑是最耀眼的星辰之一,其无与伦比的市场规模、卓越的用户体验以及强大的品牌影响力,为全球卖家铺设了一条通往成功的康庄大道。而在这条道路上,武汉流星汇聚电子商务有限公司作为一颗迅速崛起的新…

libnl教程(1):订阅内核的netlink广播通知

文章目录 前言目标netlink kernel multicast notifications订阅内核的链路(link)变化通知示例代码函数使用难点问题 前言 我之前整理过:netlink 简介。 netlink 是 libnl 的基础。 在开始之前,需要先翻看一遍官方文档:Netlink Library (li…

centos从home分区分配空间到根分区

在安装centos系统时如果采用默认自动分区,则会默认只给根分区分配50G空间,其余多余的会被分配到home分区,而作为家用服务器或仅个人使用的话,为了方便往往根分区会不够用而home分区几乎没使用。 先看下现在的磁盘结构和容量(xfs文…

第八篇 WAV文件格式

WAVE PCM soundfile format WAV即WAVE,WAVE文件是计算机领域最常用的数字化声音文件格式之一,它是微软专门为Windows系统定义的波形文件格式(Waveform Audio),其扩展名为"*.wav"。 最基本的WAVE文件…

【Linux】进程概念的铺垫

进程概念的铺垫 先谈硬件——冯诺依曼体系结构冯诺依曼体系结构的5大部件输入输出设备存储器中央处理器(CPU) 冯诺依曼体系结构示意图 再谈软件——操作系统操作系统的 目的 和 定位如何理解 "管理"总结系统调用 - system call 先谈硬件——冯…

LINUX原始机安装JDK

文章目录 下载 JDK压缩包创建jdk文件夹sftp 远程上传解压缩 tar -zxvf 包名配置环境变量刷新 环境变量验证是否安装成功安装JAVA 依赖yum更新及替换镜像curl 命令下载更新更新yum依赖判断repo文件是否存在生成缓存、启用阿里云镜像 重新下载java依赖再次验证hello world 下载 J…

Java | Leetcode Java题解之第341题扁平化嵌套列表迭代器

题目&#xff1a; 题解&#xff1a; public class NestedIterator implements Iterator<Integer> {private List<Integer> vals;private Iterator<Integer> cur;public NestedIterator(List<NestedInteger> nestedList) {vals new ArrayList<Inte…

用数据分析找到神奇公式-《股市稳赚》读后感

格林布拉特的这本书介绍了一种简单的方法&#xff0c;核心是用神奇公式寻找到高资本收益率和高股票收益率的最佳投资组合。作者对其背后原理的普遍性充满自信&#xff0c;神奇公式寻找经营良好且价格低于平均水平的公司&#xff0c;买进质优价低的公司&#xff0c;这个公式&…

C++ 设计模式——简单工厂模式

简单工厂模式 简单工厂模式主要组成部分代码实现简单工厂模式模式的 UML 图UML图解析类与方法优点和缺点适用场景 简单工厂模式 简单工厂模式是一种创建型设计模式&#xff0c;通过一个工厂类来负责对象的实例。这种模式将对象创建的细节封装在工厂类中&#xff0c;客户端无需…

掌握JavaScript中的Call和Apply,让你的代码更强大、更灵活

在学习JavaScript时&#xff0c;你可能会遇到call和apply这两个方法。它们的作用其实很相似&#xff0c;都是用来调用函数并设置函数内部的this值&#xff0c;但它们的使用方式稍有不同。 想象一下&#xff0c;你和朋友们一起拍照。call就像是你一一叫朋友们的名字&#xff0c;…

基于WEB的旅游推荐系统设计与实现

TOC springboot280基于WEB的旅游推荐系统设计与实现 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔…

Linux tail -f 报错 No space left on device

问题&#xff1a; 执行tail -f my_file 时报错&#xff1a;No space left on device df -h 检查磁盘剩余空间&#xff0c;剩余空间都很充足&#xff1b; df -i 检测iNode使用情况&#xff0c;剩余iNode也很充足&#xff1b; 参考这篇文章解决了问题 tail: cannot watch /v…

黑马前端——days05_css

页面框架文件 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible"…

书籍推荐:凤凰架构

书籍推荐 本文的视频版&#xff1a;https://www.bilibili.com/video/BV1XQeueZEp4 周志明写的一本关于 Java 架构的书籍&#xff0c;内容都是关于 Java 架构中相关的技术&#xff0c;讲的知识比较广&#xff0c;大多都是概念相关的东西&#xff0c;适合有一定 Java 开发经验的…

从零开始搭建 LVS 高性能集群 (DR模式)

从零开始搭建 LVS 高性能集群 &#xff08;DR模式&#xff09; 架构 本设计方案采用三台服务器构建集群&#xff0c;使用Linux Virtual Server (LVS) 作为负载均衡器&#xff0c;运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务&#xff0c;以实现 高可用…