es如何修改字段类型

由于es无法修改mapping,所以要通过新建索引的方式来修改字段类型

演示:如下是一个包含date字段的索引ttteset-000001,接下来我们将其字段类型改为text类型

1、准备创建索引及添加数据


PUT ttteset-000001
{
  "mappings": {
    "dynamic_date_formats": ["MM/dd/yyyy"]
  }
}

PUT ttteset-000001/_doc/1
{
  "create_date": "09/25/2015"
}

GET ttteset-000001/_search
{
  "query": {
    "match_all": {}
  }
}

GET ttteset-000001/_mapping

2、创建过渡索引

# 新建索引ttteset-000002,字段类型为text
PUT ttteset-000002
{
  "mappings": {
    "properties": {
      "create_date": {
        "type": "text"
      }
    }
  }
}

3、迁移数据

# 迁移数据
POST _reindex
{
  "source": {
    "index": "ttteset-000001"
  },
  "dest": {
    "index": "ttteset-000002"
  }
}

# 查询
GET ttteset-000002/_search
{
  "query": {"match_all": {}}
}

# 删除ttteset-000001
DELETE ttteset-000001

# 最后再将ttteset-000001创建出来,把ttteset-000002的数据再导回去即可
PUT ttteset-000001
{
  "mappings": {
    "properties": {
      "create_date": {
        "type": "text"
      }
    }
  }
}

POST _reindex
{
  "source": {
    "index": "ttteset-000002"
  },
  "dest": {
    "index": "ttteset-000001"
  }
}

GET ttteset-000001/_search
{
  "query": {"match_all": {}}
}

4、如何改变字段名称

## 此外还可以进行字段名修改,新创建的索引字段名为create——time

PUT ttteset-000001
{
  "mappings": {
    "properties": {
      "create_time": {
        "type": "text"
      }
    }
  }
}

POST _reindex
{
  "source": {
    "index": "ttteset-000002"
  },
  "dest": {
    "index": "ttteset-000001"
  },
  "script": {
    "source": "ctx._source.create_time= ctx._source.remove(\"create_date\")"
  }
}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿星_Alex

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值