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

ES中数据类型转换处理

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

测试数据类型存储

代码语言: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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Elasticsearch 数值类型也能存String 类型,有点意思~
最近经常遇到遇到某个客户问数值类型的字段也能存字符串,或者说已经将字段类型设置成了float,但是实际存储的仍然是字符串,该如何解决,今天花点时间我们来梳理整个流程。
南非骆驼说大数据
2022/01/02
2.7K3
每一个突破下限的 DSL 背后都隐藏着一个“傻X”的客户需求
但是有个问题就是,因为十一局也是包含一局的,所以doc2也会被匹配,试了好几种方式都不行,老师能否指点一下。
铭毅天下
2024/01/29
1650
每一个突破下限的 DSL 背后都隐藏着一个“傻X”的客户需求
Elasticsearch 有没有比 reindex 更轻量级的更换字段类型的方式?
现在有一组数据,其中 resultChar 是 keyword 类型,但其中有数字也有字符串,请问怎么能在大于小于查询的时候将其中的数字按照数字的类型进行大于小于的查询,结构如下:
铭毅天下
2022/09/26
5570
Elasticsearch 有没有比 reindex 更轻量级的更换字段类型的方式?
探究 | Elasticsearch Painless 脚本 ctx、doc、_source 的区别是什么?
上述问题不止一次被问到,我自己在使用 painless 脚本的时候,也会遇到上述困惑。
铭毅天下
2021/12/09
4.3K0
探究 | Elasticsearch Painless 脚本 ctx、doc、_source 的区别是什么?
painless数字类型转换_笔记四十五: Ingest Pipeline 与 Painless Script
Tags 字段中,逗号分割的文本应该是数组,而不是一个字符串需求:后期需要对 Tags 进行 Aggregation 统计
全栈程序员站长
2022/07/23
1.2K0
【ES三周年】elasticsearch 常用数据类型详解和范例
本篇文章主要讲解elasticsearch在业务中经常用到的字段类型,通过大量的范例来学习和理解不同字段类型的应用场景。范例elasticsearch使用的版本为7.17.5。
张同学tty
2023/04/08
4K0
【ES三周年】elasticsearch 常用数据类型详解和范例
【ES三周年】使用 Ingest Pipeline 在 Elasticsearch 中对数据进行预处理
Ingest pipeline 允许文档在被索引之前对数据进行预处理,将数据加工处理成我们需要的格式。例如,可以使用 ingest pipeline添加或者删除字段,转换类型,解析内容等等。Pipeline 由一组处理器 Processor 构成,每个处理器依次运行,对传入的文档进行特定的更改。Ingest pipeline 和 Logstash 中的 filter 作用相似,并且更加轻量和易于调试。
Se7en258
2023/02/16
4.1K6
【ES三周年】使用 Ingest Pipeline 在 Elasticsearch 中对数据进行预处理
Elasticsearch数据类型及其属性
dynamic和data_detection的详解:Elasticsearch dynamic mapping(动态映射) 策略.
双面人
2019/08/30
10.3K0
ES常用知识点整理第一部分
第三列倒排索引包含的信息为(文档ID,单词频次,<单词位置>),比如单词“乔布斯”对应的倒排索引里的第一项(1;1;<1>)意思是,文档1包含了“乔布斯”,并且在这个文档中只出现了1次,位置在第一个。
大忽悠爱学习
2023/02/13
5150
ES常用知识点整理第一部分
Elasticsearch 6.x Mapping设置
需要注意的是,在索引中定义太多字段可能会导致索引膨胀,出现内存不足和难以恢复的情况,下面有几个设置:
小旋锋
2019/01/21
3.2K0
Elasticsearch 8.X 可以按照数组下标取数据吗?
老师、同学们,有人遇到过这个问题么,索引中有一个 integer 数组字段,然后通过脚本获取数组下标为1的值作为运行时字段,发现返回的值是乱的,并不是下标为1的值, 具体如下:
铭毅天下
2023/09/09
3790
Elasticsearch 8.X 可以按照数组下标取数据吗?
painless语法入门[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125872.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/01
1.4K0
Elasticsearch 学习笔记
es提供了一个测试分词的 api 接口,方便验证分词效果,endpoint 是 _analyze
学徒漠筱歌
2022/07/17
6210
ElasticSearch 如何配置某个字段的权重?
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2020/11/27
5.3K0
【Elasticsearch】Rest风格API
Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。
陶然同学
2023/02/24
1.1K0
【Elasticsearch】Rest风格API
Elasticsearch 如何实现时间差查询?
lang 指的是脚本语言,这里使用的是:expression,不是 painless 无痛脚本,所以写法和往常会不同。
铭毅天下
2022/09/26
1.8K0
Elasticsearch 如何实现时间差查询?
索引生命周期管理
可以分为hot,warm,cold,frezen,delete多个阶段,每个阶段可以对索引实施不同的策略
周银辉
2024/09/27
1470
Elasticsearch 有没有数组类型?有哪些坑?
近期 Elasticsearch 数组问题被问到的比较多,为了方便大家对数组建立全局认知,我把数组相关实战问题梳理出来,让更多后来人遇到类似问题少走不必要的弯路。
铭毅天下
2022/01/05
3.2K0
数万字长文带你入门elasticsearch
es会根据创建的文档动态生成映射,可以直接将动态生成的映射直接复制到需要自定义的mapping中
没有故事的陈师傅
2022/04/05
1.8K0
ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门、索引管理、映射详解,本文详细介绍ElasticSearch的索引别名、分词器、文档管理、路由、搜索详解。
数据和云
2019/08/16
4.1K0
推荐阅读
相关推荐
Elasticsearch 数值类型也能存String 类型,有点意思~
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档