Elasticsearch Reindex数据(将字符串转换为数字类型)

场景:在创建的时候使用string,进入es后是keyword类型,在使用kibana的时候不能使用它做视图
在网上找了很多,不能更改字段类型,有些很麻烦,看这个比较简单
其实就是创建一个新的index,再把老index导入进去

话不多说上干货

老的index是qzwl_dcs
数据json是

{
  "_index": "qzwl_dcs",
  "_type": "qzwl_dcs",
  "_id": "000739974655122-1420191908",
  "_version": 1,
  "_score": 1,
  "_source": {
    "date": "2019-04-29T03:32:17.000+0800",
    "area": "2",
    "kks": "10MKF88CP101",
    "station": "2",
    "name": "1#机转子线圈进水压力1",
    "moduleName": "转子线圈进水口",
    "moduleId": "72",
    "value": "203.55"
  },
  "fields": {
    "date": [
      "2019-04-28T19:32:17.000Z"
    ]
  }
}

value字段现在是keyword类型,想把他变成double类型

先创建一个新的index,type名称和qzwl_dcs一样

curl -H 'Content-Type: application/json' -XPUT "http://192.168.31.203:9200/dcs_new"
curl  -H 'Content-Type: application/json' -XPOST "http://192.168.31.203:9200/dcs_new/qzwl_dcs/_mapping?pretty" -d ' 
{
    "qzwl_dcs": {
            "properties": {
                "value": {
                    "type": "double",
                    "store": "true",
                    "ignore_malformed": "true"
                }
            }
        }
  }

"ignore_malformed"是设置允许插入其他类型 即忽略类型异常
因为我的value中有null字符串,一开始没加,报错
加上"ignore_malformed"以后,导入的数值是null时,value一般是空

下面开始导数据


curl  -X POST "localhost:9200/_reindex" -H 'Content-Type: application/json' -d'
{
  "source": {
    "index": "qzwl_dcs"
    "size": 5000
  },
  "dest": {
    "index": "dcs_new"
    "routing": "=cat"
  }
}'

注意 : size代表每次导入数据量,可以适当更改,这个的优化也是要有的,否则会很慢
优化可以看下边连接

链接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值