ES修改字段类型详解

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

一、需求概述

ES修改字段类型是指在已有的索引中,通过特定的操作方式将某个字段的类型修改为其它类型。当ES在建立索引的时候,已经确定好了每个字段的类型,而如果在建立后发现类型不符需求,就需要修改字段类型。

二、修改字段类型的原因

有以下几种情况会导致修改字段类型的需求:

1、字段类型选择错误:选择了不合适的字段类型,如字符串类型却存储数字,会导致查询结果出现错误。

2、业务需求变更:随着业务的发展,需求可能会发生变化,需要优化现有结构或添加新功能,这就可能需要修改字段类型。

3、数据类型不符:ES默认的数据类型不能满足业务需求,需要自定义类型。

三、修改字段类型的操作方式

修改字段类型主要有以下两种方式:

1、使用Reindex API:Reindex API可以将已有索引中的数据重新建立索引到新的索引中,同时可以修改字段类型。

2、使用Update by Query API:Update by Query API可以指定需要修改的字段类型,更新指定字段的数据。

四、修改字段类型的具体实现

1、使用Reindex API

Reindex API实现字段类型修改的具体流程如下:

1)建立新的索引并指定需要修改的字段类型。

PUT /new_index
{
  "mappings": {
    "properties": {
      "new_field": {
        "type": "integer"
      }
    }
  }
}

2)使用Reindex API将旧索引的数据重新建立索引到新的索引中,同时修改字段类型。

POST _reindex
{
  "source": {
    "index": "old_index"
  },
  "dest": {
    "index": "new_index"
  },
  "script": {
    "source": "ctx._source.new_field=ctx._source.old_field",
    "lang": "painless"
  }
}

2、使用Update by Query API

Update by Query API实现字段类型修改的具体流程如下:

1)使用Update by Query API指定需要修改的字段类型。

POST old_index/_update_by_query
{
  "script": {
    "source": "ctx._source.new_field=params.new_field",
    "params": {
      "new_field": {
        "type": "integer"
      }
    }
  }
}

五、注意事项

1、修改字段类型可能会影响查询结果,需要在业务允许的情况下进行修改。

2、修改字段类型的过程中需要保证数据的一致性和完整性。

3、如果使用Reindex API,需要保证新索引和旧索引的映射关系一致,否则可能会导致数据丢失。

4、如果数据量非常大,建议使用scroll API逐步迁移。文章来源地址https://www.toymoban.com/news/detail-752694.html

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

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

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

相关文章

  • ES修改字段的数据类型

    原索引 : ads_assets_index_list_test_df 中 index_value 字段数据类型为 float, 无法使用sort进行排序,现需要改成 keyword 。 步骤一:创建过渡索引 重新创建一个索引 ads_assets_index_list_test00_df, index_value 字段数据类型为 keyword 步骤二:迁移数据 将旧索引的数据导入新索引 查询可以看到

    2024年02月06日
    浏览(40)
  • ES修改字段类型(elastic)

    有个需求是将es的一个date类型的字段改为string类型,经查阅资料发现es不支持直接修改字段类型,只能将原索引结构复制出来,然后单独修改某个字段的类型后,再去新建一个索引将这个结构填充进去,填充完复制原索引数据到新索引,进而使用新的索引(也可以删掉老的索

    2024年02月06日
    浏览(49)
  • kibana中ES修改某个字段类型问题

     近日,发现同步数据到es的时候,有个新建的索引动态适配了mapping,而往往这种会有字段类型不是我们想要的,比如我这就有个tid字段,此字段要在聚合操作中使用,而此时的tid被识别成text类型了,而text不支持聚合,所以要更改字段类型为long或者keyword,注意es 不支持直接

    2024年02月08日
    浏览(52)
  • Elasticsearch(019):es常见的字段映射类型之数组类型(arrays)

    在Elasticsearch中,没有专用的array数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型。 这一点是区别于nested的,nested指的对象的集合。而arrays则是单一类型的数组集合而已。 此外,不需要专门的类型类定义数组类型

    2024年02月13日
    浏览(45)
  • es elasticsearch kibana 根据 id 只更新部分字段

    官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_update_part_of_a_document 给自己记录一下: 其中 test 是索引名,需要根据实际情况替换。_update 是固定值,表示更新文档。1 是想要更新文档的主键,根据实际情况替换。 “doc” 是固定值,“my_field_name” 是被

    2024年02月13日
    浏览(44)
  • Elasticsearch基础篇(六):es映射和常用的字段类型

    官方地址:Mapping 在 Elasticsearch 中,映射是索引的关键组成部分,它定义了文档的结构和字段。每个文档都包含一个或多个字段,而映射定义了这些字段的数据类型、如何分析文本、字段是否可搜索等信息。 映射的主要作用包括: 定义字段类型 :你可以指定字段是文本、数

    2024年02月04日
    浏览(87)
  • Elasticsearch (ES) 搜索引擎: 数据类型、动态映射、多类型(子字段)

    原文链接:https://xiets.blog.csdn.net/article/details/132348634 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) ES 映射字段的 数据类型 ,官网文档参考:Field data types。 下面是 ES 常用的一些基本数据类型。 字符串 类型: keyword :类型。 text :文本类型。

    2024年03月23日
    浏览(67)
  • ElasticSearch第八讲 ES索引字段映射类型以及动态映射相关操作

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

    2024年02月10日
    浏览(47)
  • ElasticSearch系列 - SpringBoot整合ES:映射中定义字段的数据类型及属性

    ElasticSearch - SpringBoot整合ES:映射定义字段的数据类型及属性 01. ElasticSearch 搜索结果的准确性和召回率是什么? 在Elasticsearch中,搜索结果的准确性和召回率是非常重要的指标,它们反映了搜索引擎的性能和效果。以下是这两个指标的定义和解释: 准确性:搜索结果的准确性

    2024年02月08日
    浏览(47)
  • ES 新增字段和删除字段、修改字段值

    新增字段: 删除字段: 修改es的某个字段值:

    2024年02月05日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包