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"
      }
    }
  ]
}
相关推荐
泡海椒16 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven
计算机魔术师16 小时前
OpenAI 发布 GPT-6 Astra:多项基准刷新纪录, cybersecurity 能力达 Critical 阈值
前端
xy345316 小时前
Axure9.0中继器遮罩实现方法
前端·ui·html·axure·原型·产品设计
青山木16 小时前
Hot 100 --- 数组中的第K个最大元素
java·数据结构·算法·排序算法
风骏时光牛马16 小时前
智能任务自动化协同AI工作流
前端
玛卡巴卡ldf16 小时前
【AICoding】笔试提示词设计思路
java·算法·ai编程
IT_陈寒17 小时前
Python的多线程居然是个假把式?搞清GIL让我少熬三天夜
前端·人工智能·后端
宿67417 小时前
vue3-config
前端·javascript·vue.js
珍珠先生17 小时前
第10章 JDK 17 新特性:语法糖与新能力
java
明月_清风17 小时前
位图与布隆过滤器:海量数据下的"存在性判断"艺术
前端·后端·算法