ES的字段更改字段类型

背景:联调时候往ES插入了新字段,给的类型是"keyword"类型,后面发现存"object"类型更符合情况。再插入就会报错,需要把原来的"keyword"类型替换成"object"类型

步骤:

1.先把脏数据找出来删掉

复制代码
DELETE device_events/_doc/f0ae608ca7cc4264bbbbc6d55cb8ab05

2.查询索引的字段类型映射

复制代码
GET /device_events/_mapping

3.创建新的索引device_events11,并把之前的字段类型映射给到这个索引,但是需要把你要改的字段类型改掉,或者去掉也行(去掉的话,后面插入时候会自动创建类型,ES会根据插入数据类型来自动判断给什么类型)

复制代码
PUT device_events11
{
   "mappings" : {
    // 插入第2步查询到的字段类型映射
    }
}

4.把旧的索引中的数据转移到新建的索引里面

复制代码
POST /_reindex
{
  "source": {
    "index": "device_events"
  },
  "dest": {
    "index": "device_events11"
  }
}

5.确认数据是否全部转移完成

复制代码
GET device_events/_count
GET device_events11/_count

6.删掉旧索引

复制代码
DELETE /device_events

7.把新的索引添加别名,别名就用旧的索引名

复制代码
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "device_events11",
        "alias": "device_events"
      }
    }
  ]
}
相关推荐
共享家95272 小时前
搭建 AI 聊天机器人:”我的人生我做主“
前端·javascript·css·python·pycharm·html·状态模式
惊讶的猫3 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
jmxwzy3 小时前
Spring全家桶
java·spring·rpc
Halo_tjn3 小时前
基于封装的专项 知识点
java·前端·python·算法
Fleshy数模4 小时前
从数据获取到突破限制:Python爬虫进阶实战全攻略
java·开发语言
像少年啦飞驰点、4 小时前
零基础入门 Spring Boot:从“Hello World”到可上线的 Web 应用全闭环指南
java·spring boot·web开发·编程入门·后端开发
苍煜4 小时前
万字详解Maven打包策略:从基础插件到多模块实战
java·maven
有来技术4 小时前
Spring Boot 4 + Vue3 企业级多租户 SaaS:从共享 Schema 架构到商业化套餐设计
java·vue.js·spring boot·后端
东东5164 小时前
xxx医患档案管理系统
java·spring boot·vue·毕业设计·智慧城市
一个响当当的名号5 小时前
lectrue9 索引并发控制
java·开发语言·数据库