ElasticSearch修改索引字段类型

您所在的位置:网站首页 elasticsearch索引 ElasticSearch修改索引字段类型

ElasticSearch修改索引字段类型

#ElasticSearch修改索引字段类型| 来源: 网络整理| 查看: 265

一、Es报MapperParsingException异常

线上功能报错,一看日志是往es中添加数据报错,错误日志如下:

org.elasticsearch.index.mapper.MapperParsingException: failed to parse field [categoryId] of type [integer] in document with id '1628993540560302081' ... Caused by: java.io.IOException: Numeric value (1621025777837514753) out of range of int

说是数据中有个字段类型转换错误,一查es脚本工具,果然生产es索引中categoryId这个字段是integer类型,而实际是long类型。

补充:es查询索引类型查询方法 get请求 http://地址/索引/类型/_mapping 无需参数

在这里插入图片描述

二、ES修改索引字段类型 1、方法简述

es不能直接修改索引字段类型,需要删除调新建,具体方法如下

1. 创建一个中间索引 2. 向中间索引备份源索引的数据(mapping) 3. 查询确认数据是否copy过去 4. 删除有问题的索引 5. 重新创建同名的索引(★字段类型修改正确★) 6. 从中间索引还原到源索引的数据 7. 删除中间索引 2、具体执行案例

我这次遇到问题的es索引中没有旧数据,所以只要把字段类型错的索引删除,然后新建同名索引(字段类型改正确)

1)删除旧索引

可以通过es脚本插件的删除按钮删除 在这里插入图片描述 也可以发请求删除

补充:es删除索引方法 delete请求 http://地址/索引

在这里插入图片描述

2)重新创建同名的索引(★字段类型修改正确★) 补充:es创建索引方法

需要 “新建索引”——>“添加mapping” 两步(我目前只知道这一种方法)。

第一步,先在脚本插件新建索引 在这里插入图片描述 第二步,为新建索引创建Mapping(即发设置字段参数的请求) 在这里插入图片描述 因为参数大部分与删除前的索引相同,只有个别地方需要修改;所以,我在删除旧索引之前,复制了mapping中的参数、做了一点修改,然后在设置新索引mapping这里粘贴上去即可。

3、因为我的旧索引中没有数据,所以可以直接删除、新增;下面介绍一下需要备份参数的具体方法(就是一种说的) # 1. 创建一个中间索引 #创建索引 PUT demo_metric_1/ # 创建Mapping POST demo_metric_1/type/_mapping { "type": { "properties": { "log_time_date": { "type": "date", "format": "epoch_millis" }, ..... } } } # 2. 向中间索引备份源索引的数据 # 重建索引 POST _reindex { "source": { "index": "demo_metric" }, "dest": { "index": "demo_metric_1" } } # 3.查询确认数据是否copy过去 GET /demo_metric/type/_search GET /demo_metric_1/type/_search # 4.删除有问题的索引 # 删除有问题的索引 DELETE demo_metric # 5.重新创建同名的索引(★字段类型修改正确★) #创建索引 PUT demo_metric/ # 创建Mapping POST demo_metric/type/_mapping { "type": { "properties": { "log_time_date": { "type": "date", "format": "epoch_millis" }, ..... } } } # 6. 从中间索引还原到源索引的数据 # 重建索引 POST _reindex { "source": { "index": "demo_metric_1" }, "dest": { "index": "demo_metric" } } # 7. 删除中间索引 DELETE demo_metric_1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3