Elasticsearch 不允许直接修改现有索引的映射来添加新字段

ops/2024/10/18 7:52:21/

由于 Elasticsearch 不允许直接修改现有索引的映射来添加新字段,您需要采取以下步骤来添加新字段:

1. **创建新索引**:
   创建一个新的索引,包含原始字段和您想要添加的新字段 `content`。

   ```json
   PUT /new_article
   {
     "mappings": {
       "_doc": {
         "properties": {
           "title": {
             "type": "text",
             "analyzer": "ik_max_word",
             "search_analyzer": "ik_max_word"
           },
           "desc": {
             "type": "text",
             "analyzer": "ik_max_word",
             "search_analyzer": "ik_max_word"
           },
           "content": {  // 新增字段
             "type": "text",
             "analyzer": "ik_max_word",
             "search_analyzer": "ik_max_word"
           }
         }
       }
     }
   }
   ```

2. **迁移数据**:
   使用 `_reindex` API 将数据从旧索引 `article` 迁移到新索引 `new_article`。

   ```json
   POST /_reindex
   {
     "source": {
       "index": "article"
     },
     "dest": {
       "index": "new_article"
     }
   }
   ```

3. **更新别名** (如果使用):
   如果您使用别名,需要更新别名指向新的索引。

   ```json
   POST /_aliases
   {
     "actions": [
       {
         "remove": {
           "index": "article",
           "alias": "article_alias"  // 假设您的别名是 article_alias
         }
       },
       {
         "add": {
           "index": "new_article",
           "alias": "article_alias"
         }
       }
     ]
   }
   ```

4. **删除旧索引** (可选):
   在确认新索引工作正常并且别名已经更新之后,您可以删除旧的索引以释放资源。

   ```json
   DELETE /article
   ```

5. **更新应用程序配置**:
   更新您的应用程序配置,确保它指向新的索引或别名。

请注意,这个过程涉及到数据迁移,因此在执行这些步骤之前,请确保您已经备份了数据,以防止数据丢失。此外,根据您的数据量大小,迁移数据可能需要一些时间,并且可能会对 Elasticsearch 集群的性能产生影响。建议在低峰时段进行这些操作。
 


http://www.ppmy.cn/ops/98067.html

相关文章

设计一个登录系统时,分布式如何保证

设计一个分布式登录系统时,需要确保系统的可靠性、安全性和可扩展性。分布式系统的登录功能需要处理用户认证、授权、会话管理等方面,并且要在多个服务器或服务实例之间保持一致。以下是设计分布式登录系统时需要考虑的一些关键点: 1 . 用户…

Win10安装ChatTTS-2024-cuda10.1

0x00 前言 ChatTTS是专门为对话场景设计的文本转语音模型,例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。 0x01 准备环境 版本操作系统Win1…

Kotlin 语法

字符串比较 var str1 "chaychan" var str2 "chaychan" println(str1 str2)比较两个字符串,如果两个字符串的内容一致,在Java中使用 str1 str2 时,是比较两个字符串的地址值,很清楚两个字符串的地址不一样…

uniapp 网络请求自动处理loading

文章目录 背景整理思路V1版本V2版本V3版本 背景 最近在写uniapp,发现执行网络请求的时候经常要处理Loading效果。 比如,在发送网络请求之前,触发Loadng;无论请求成功还是失败都要关闭Loading;请求失败的时候我们还要…

线程优先级调度

Windows优先级调度算法 系统维护了一个全局的处理器数组KiProcessorBlock,其中每个元素对应于一个处理器的KPRCB对象。其次,另有一个全局变量KiIdleSummary记录了哪些处理器当前是空闲的。所谓一个处理器是空闲的,是指该处理器正在执行空闲循…

python-leetcode刷题日记

1、defaultdict 用于计数,计算元素key出现的个数,可以避免key不存在的时候报错,当KEY不存在的时候默认为0,可以是list、set、str defaultdict[key].append[value] 49. 字母异位词分组 ​ 给你一个字符串数组,请你将 字母异位词…

实时美颜技术的实现:视频美颜SDK与直播美颜工具的最佳实践

视频美颜SDK与直播美颜工具的诞生,为主播美颜一需求提供了技术支撑。接下来,笔者将深入探讨实时美颜技术的实现及其在视频美颜SDK与直播美颜工具中的最佳实践。 一、实时美颜技术的核心原理 具体来说,主要包括以下几个步骤: 1.…

VirtualBox上的Oracle Linux虚拟机安装Docker全流程

1.安装docker依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装docker仓库 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 生成docker的yum源配置到在 /etc/yum.repos.d/docker-ce.repo 3.安装D…