Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ES中数据类型转换处理

ES中数据类型转换处理

原创
作者头像
周银辉
发布于 2025-02-13 16:10:39
发布于 2025-02-13 16:10:39
1250
举报

测试数据类型存储

代码语言:txt
AI代码解释
复制
PUT my_type_index
{
  "mappings": {
    "properties": {
      "price":{
        "type":"float"
      }
    }
  }
}

正常存储数字

代码语言:txt
AI代码解释
复制
PUT my_type_index/_doc/1
{
  "price":7.8
}

这里能把字符串数据存进去

代码语言:txt
AI代码解释
复制
PUT my_type_index/_doc/2
{
  "price":"9.4"
}

字符串无法存储

代码语言:txt
AI代码解释
复制
PUT my_type_index/_doc/3
{
  "price":"change the data type"
}

查询到数据即有数字,又有字符串

代码语言:txt
AI代码解释
复制
GET my_type_index/_search
{
  "query": {
    "match_all": {}
  }
}

如何才能只存储数字,字段中使用coerce

代码语言:txt
AI代码解释
复制
DELETE my_type_index
PUT my_type_index
{
  "mappings": {
    "properties": {
      "price": {
        "type": "float",
        "coerce": false
      }
    }
  }
}

这个时候就无法写入了

代码语言:txt
AI代码解释
复制
PUT my_type_index/_doc/1
{
  "price":"9.4"
}

针对已有的数据如何处理呢?可以通过reindex + pipeline

代码语言:txt
AI代码解释
复制
DELETE my_type_index2
PUT my_type_index2
{
  "mappings": {
    "properties": {
      "price":{
        "type":"float",
        "coerce": false
      }
    }
  }
}

这是是不会直接成功的,必须先转换

代码语言:txt
AI代码解释
复制
POST _reindex
{
  "source": {
    "index": "my_type_index"
  },
  "dest": {
    "index": "my_type_index2"
  }
}

创建pipeline

代码语言:txt
AI代码解释
复制
PUT _ingest/pipeline/my_convert_test_pipe
{
  "description": "convert string to float", 
  "processors": [
    {
      "convert": {
        "field": "price",
        "type": "float"
      }
    }
  ]
}

再次重建

代码语言:txt
AI代码解释
复制
POST _reindex
{
  "source": {
    "index": "my_type_index"
  },
  "dest": {
    "index": "my_type_index2",
    "pipeline": "my_convert_test_pipe"
  }
}

经过查询,数据全部完成转换

代码语言:txt
AI代码解释
复制
GET my_type_index2/_search

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
每一个突破下限的 DSL 背后都隐藏着一个“傻X”的客户需求
但是有个问题就是,因为十一局也是包含一局的,所以doc2也会被匹配,试了好几种方式都不行,老师能否指点一下。
铭毅天下
2024/01/29
1700
每一个突破下限的 DSL 背后都隐藏着一个“傻X”的客户需求
Elasticsearch 数值类型也能存String 类型,有点意思~
最近经常遇到遇到某个客户问数值类型的字段也能存字符串,或者说已经将字段类型设置成了float,但是实际存储的仍然是字符串,该如何解决,今天花点时间我们来梳理整个流程。
南非骆驼说大数据
2022/01/02
2.8K3
Elasticsearch: Reindex接口
在我们开发的过程中,我们有很多时候需要用到 Reindex 接口。它可以帮我们把数据从一个 index 到另外一个 index 进行重新reindex。这个对于特别适用于我们在修改我们数据的 mapping 后,需要重新把数据从现有的 index 转到新的 index 建立新的索引,这是因为我们不能修改现有的 index 的 mapping 一旦已经定下来了。在接下来的介绍中,我们将学习如何使用 reindex 接口。
腾讯云大数据
2020/09/25
1.1K0
Elasticsearch: Reindex接口
painless语法入门[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125872.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/01
1.4K0
探究 | Elasticsearch Painless 脚本 ctx、doc、_source 的区别是什么?
上述问题不止一次被问到,我自己在使用 painless 脚本的时候,也会遇到上述困惑。
铭毅天下
2021/12/09
4.3K0
探究 | Elasticsearch Painless 脚本 ctx、doc、_source 的区别是什么?
ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门、索引管理、映射详解,本文详细介绍ElasticSearch的索引别名、分词器、文档管理、路由、搜索详解。
数据和云
2019/08/16
4.1K0
painless数字类型转换_笔记四十五: Ingest Pipeline 与 Painless Script
Tags 字段中,逗号分割的文本应该是数组,而不是一个字符串需求:后期需要对 Tags 进行 Aggregation 统计
全栈程序员站长
2022/07/23
1.3K0
Elasticsearch 有没有比 reindex 更轻量级的更换字段类型的方式?
现在有一组数据,其中 resultChar 是 keyword 类型,但其中有数字也有字符串,请问怎么能在大于小于查询的时候将其中的数字按照数字的类型进行大于小于的查询,结构如下:
铭毅天下
2022/09/26
5850
Elasticsearch 有没有比 reindex 更轻量级的更换字段类型的方式?
6.索引数据的基本操作
每次查询、删除、更新等操作,都会与ES建立一次连接,这会导致大量的请求打在ES服务器上面,从而间接导致数据索引变慢,那么ES是不是可以搞一个批量请求提交,多个操作都在一个请求中完成?答案当然是可以的啦,那我们看下怎么操作
AI码师
2023/09/11
1600
6.索引数据的基本操作
ES常用知识点整理第一部分
第三列倒排索引包含的信息为(文档ID,单词频次,<单词位置>),比如单词“乔布斯”对应的倒排索引里的第一项(1;1;<1>)意思是,文档1包含了“乔布斯”,并且在这个文档中只出现了1次,位置在第一个。
大忽悠爱学习
2023/02/13
5300
ES常用知识点整理第一部分
Elasticsearch 有没有数组类型?有哪些坑?
近期 Elasticsearch 数组问题被问到的比较多,为了方便大家对数组建立全局认知,我把数组相关实战问题梳理出来,让更多后来人遇到类似问题少走不必要的弯路。
铭毅天下
2022/01/05
3.3K0
ElasticSearch常见用法, 看这一篇就够了
ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL,Query DSL是利用Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。
架构狂人
2023/09/13
3600
ElasticSearch常见用法, 看这一篇就够了
【ES三周年】elasticsearch 常用数据类型详解和范例
本篇文章主要讲解elasticsearch在业务中经常用到的字段类型,通过大量的范例来学习和理解不同字段类型的应用场景。范例elasticsearch使用的版本为7.17.5。
张同学tty
2023/04/08
4.1K0
【ES三周年】elasticsearch 常用数据类型详解和范例
Elasticsearch探索: Reindex API
5.X版本后新增Reindex。Reindex可以直接在Elasticsearch集群里面对数据进行重建,如果你的mapping因为修改而需要重建,又或者索引设置修改需要重建的时候,借助Reindex可以很方便的异步进行重建,并且支持跨集群间的数据迁移。
HLee
2021/01/14
2.4K0
Elasticsearch探索: Reindex API
【ES三周年】使用 Ingest Pipeline 在 Elasticsearch 中对数据进行预处理
Ingest pipeline 允许文档在被索引之前对数据进行预处理,将数据加工处理成我们需要的格式。例如,可以使用 ingest pipeline添加或者删除字段,转换类型,解析内容等等。Pipeline 由一组处理器 Processor 构成,每个处理器依次运行,对传入的文档进行特定的更改。Ingest pipeline 和 Logstash 中的 filter 作用相似,并且更加轻量和易于调试。
Se7en258
2023/02/16
4.2K6
【ES三周年】使用 Ingest Pipeline 在 Elasticsearch 中对数据进行预处理
索引生命周期管理
可以分为hot,warm,cold,frezen,delete多个阶段,每个阶段可以对索引实施不同的策略
周银辉
2024/09/27
1650
Elasticsearch 8.X 可以按照数组下标取数据吗?
老师、同学们,有人遇到过这个问题么,索引中有一个 integer 数组字段,然后通过脚本获取数组下标为1的值作为运行时字段,发现返回的值是乱的,并不是下标为1的值, 具体如下:
铭毅天下
2023/09/09
4340
Elasticsearch 8.X 可以按照数组下标取数据吗?
Elasticsearch 学习笔记
es提供了一个测试分词的 api 接口,方便验证分词效果,endpoint 是 _analyze
学徒漠筱歌
2022/07/17
6360
数万字长文带你入门elasticsearch
es会根据创建的文档动态生成映射,可以直接将动态生成的映射直接复制到需要自定义的mapping中
没有故事的陈师傅
2022/04/05
1.8K0
ELK专栏之ES索引-04
● 在生产上,我们需要自己手动建立索引和映射,是为了更好的管理索引,就像数据库的建表数据一样。
大忽悠爱学习
2022/09/29
6800
ELK专栏之ES索引-04
推荐阅读
相关推荐
每一个突破下限的 DSL 背后都隐藏着一个“傻X”的客户需求
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档