ElasticSearch修改索引字段类型

这篇具有很好参考价值的文章主要介绍了ElasticSearch修改索引字段类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、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
无需参数

ElasticSearch修改索引字段类型

二、ES修改索引字段类型

1、方法简述

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

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

2、具体执行案例

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

1)删除旧索引

可以通过es脚本插件的删除按钮删除
ElasticSearch修改索引字段类型
也可以发请求删除

补充:es删除索引方法

delete请求
http://地址/索引

ElasticSearch修改索引字段类型

2)重新创建同名的索引(★字段类型修改正确★)

补充:es创建索引方法

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

第一步,先在脚本插件新建索引
ElasticSearch修改索引字段类型
第二步,为新建索引创建Mapping(即发设置字段参数的请求)
ElasticSearch修改索引字段类型
因为参数大部分与删除前的索引相同,只有个别地方需要修改;所以,我在删除旧索引之前,复制了mapping中的参数、做了一点修改,然后在设置新索引mapping这里粘贴上去即可。文章来源地址https://www.toymoban.com/news/detail-400690.html

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

到了这里,关于ElasticSearch修改索引字段类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch第八讲 ES索引字段映射类型以及动态映射相关操作

    ES的映射:映射就是 Mapping,它用来定义一个文档以及文档所包含的字段该如何被存储和索引。所以,它其实有点类似于关系型数据库中表的定义。其中ES中映射可以分为动态映射和静态映射,静态映射就是提前创建好对应字段文档映射关系,如果插入的类型不对会出错,而动

    2024年02月10日
    浏览(36)
  • 用Elasticsearch做大规模数据的多字段、多类型索引检索

    本文同时发布在我的个人博客 之前尝试了用mysql做大规模数据的检索优化,可以看到单字段检索的情况下,是可以通过各种手段做到各种类型索引快速检索的,那是一种相对简单的场景。 但是实际应用往往会复杂一些 —— 各类索引(匹配、全文检索、时间范围)混合使

    2024年04月10日
    浏览(39)
  • 5.elasticsearch映射操作(创建|修改|删除)及字段类型

    1.本文介绍了 elasticsearch 映射的操作方式,包括映射创建,修改,删除; 2.映射定义: 映射是定义文档及其包含的字段如何存储和索引的过程 。 例如,使用映射来定义: ① 哪些字符串字段应该被作为全文检索字段; ② 哪些字段包含 数字,日期,及地理位置; ③ 日期格式

    2023年04月12日
    浏览(52)
  • ElasticSearch创建后的索引如何修改数据类型

    一、前言 在 Elasticsearch 中,一旦创建索引,就不能更改现有字段的数据类型。如果您需要更改数据类型,则需要重新创建索引并使用新的数据类型。以下针对各种业务场景总结几种修改方法。 二、【方法一】删除重建 这种方式的使用场景为当前索引库数据量不大,而且可

    2024年02月13日
    浏览(41)
  • 类型转换与索引使用与字段缓存问题

    ** 1: 类型转换与索引使用** 假设你有一个MySQL表格 users ,其中有一个 age 列,数据类型是整数(INT),并且为该列创建了一个索引。然后你执行以下查询: 在这个查询中,你将整数值 \\\'25\\\' 用作字符串来匹配 age 列。MySQL 可能会自动进行类型转换,将字符串转换为整数,然后再

    2024年02月13日
    浏览(29)
  • ElasticSearch索引mapping添加字段

    ES版本5.3.0,在已存在的索引mapping中添加字段。 如下: my_index索引名称,my_type为索引类型名称,new_field_name为新增的字段名称。 如下: 返回为true代表添加操作成功。

    2024年02月13日
    浏览(31)
  • Sql Server增加字段、修改字段、修改类型、修改默认值

    1、修改字段名: alter table 表名 rename column A to B 2、修改字段类型: alter table 表名 alter column 字段名 type not null 3、修改字段默认值 alter table 表名 add default (0) for 字段名 with values 如果字段有默认值,则需要先删除字段的约束,在添加新的默认值, select c.name from sysconstraints a i

    2024年02月06日
    浏览(31)
  • Mysql,创建/删除表、添加表字段、修改表字段、添加索引等常用语句。

       以下方 user 表为例,讲解如何Mysql创建表语句、添加表字段、修改表字段、添加索引等常用的SQL语句。     出于编写本篇文章的考虑,使用下方建表语句创建的  user表 有很多不合理的地方,例如:teacher_id 是 varchar类型而非 bigint类型、 \\\'创建时间\\\' 有2个字段 等。 大家在自

    2024年02月11日
    浏览(35)
  • ElasticSearch - 索引增加字段并查询增加字段前的历史数据

    1. 问题引入 我们项目中有一个需求:ElasticSearch存在很多历史数据,然后需求中索引新增了一个字段,我们需要根据条件查询出历史数据,但历史数据中这个新增的字段并不存在,如何查询到历史数据呢? 1. 索引2个文档 2. 给索引增加新的字段 3. 再次索引1个文档 这个文档新

    2024年02月10日
    浏览(46)
  • Python连接Elasticsearch查询索引字段命中数详解

    📚 个人网站:ipengtao.com Elasticsearch是一款强大的搜索和分析引擎,通过其RESTful API,可以方便地与其交互。本篇文章将深入探讨如何使用Python连接Elasticsearch,并通过查询索引某个字段的命中数来实现数据统计的目的。将介绍基础的Elasticsearch查询、高级的聚合查询以及一些常

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包