ElasticSearch使用别名进行索引数据迁移

本文详细介绍了在Elasticsearch中动态创建索引、添加数据时遇到的类型错误问题,以及如何通过别名、批量数据迁移和索引映射修改来解决这一挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

点赞在看,养成习惯。

点赞收藏,人生辉煌。

ElasticSearch 版本为 7.8.1。
Kibana 版本为 7.8.1。
这些命令都是在Kibana下的控制台进行测试的。
关于ElasticSearch集群的搭建和Kibana的使用可以看我的其他文章。

1、动态创建索引my_68_idx并添加数据

PUT /my_68_idx/_doc/1
{
  "title":"2020-09-01"
}

添加日期字符串

2、再次添加一条数据

PUT /my_68_idx/_doc/1
{
  "title":"this is a string"
}

嗯,竟然报错了。

2.1、图解

在这里插入图片描述

什么鬼,类型错误。

3、查看这个索引给动态生成的类型

GET /my_68_idx/_mapping

3.1、图解

在这里插入图片描述

发现动态生成的类型是date类型,但是我们实际想要生成text类型。

4、尝试修改title类型

PUT /my_68_idx/_mapping
{
  "properties": {
    "title": {
      "type": "text"
    }
  }
}

4.1、图解

在这里插入图片描述

咿,类型合并失败,这条路走不通了。试试别名吧

5、给这个索引起个别名

PUT /my_68_idx/_alias/useful_idx

6、测试这个别名是否可用

GET /useful_idx/_doc/1

6.1、图解

在这里插入图片描述

亲测,可用,别名可以的。

7、新创建一个新的索引

PUT /my_68_idx_new
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text"
      }
    }
  }
}

8、查询my_68_idx索引的数据

GET /my_68_idx/_search?scroll=1s
{
  "query": {
    "match_all": {}
  },
  "sort": ["_doc"],
  "size": 1
}

因为只有一条数据,所以size为1,如果有多条数据可以多查询几次,每次的size设置稍微大一点。

8.1、图解

在这里插入图片描述

9、将上面批量查询的数据添加到新的索引中

POST /_bulk
{"index":{"_index":"my_68_idx_new","_id":"1"}}
{"title" : "2020-09-01"}

批量操作,把步骤8查询到的数据,在这里批量插入新的my_68_idx_new中。

10、查询是否添加成功

GET /my_68_idx_new/_doc/1

10.1、图解

在这里插入图片描述

11、修改别名将my_68_idx这个索引对应的别名转换到my_68_idx_new上

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "my_68_idx_new",
        "alias": "useful_idx"
      }
    },
    {
      "remove": {
        "index": "my_68_idx",
        "alias": "useful_idx"
      }
    }
  ]
}

12、别名查询数据发现使用的是新的索引

GET /useful_idx/_doc/1

12.1、图解

在这里插入图片描述

谢谢点赞
  • 创作不易, 非常欢迎大家的点赞、评论和关注(^_−)☆
  • 你的点赞、评论以及关注是对我最大的支持和鼓励
  • 是我继续创作高质量博客的动力 !!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞流2023

小主,破费了,回头请你喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值