Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Elasticsearch探索:数据类型强制匹配coerce使用

Elasticsearch探索:数据类型强制匹配coerce使用

作者头像
HLee
修改于 2021-01-28 08:04:49
修改于 2021-01-28 08:04:49
1.2K00
代码可运行
举报
文章被收录于专栏:房东的猫房东的猫
运行总次数:0
代码可运行

简介

官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/coerce.html#coerce

在实际的使用中,数据并不总是正确的。 根据产生方式的不同,数字可能会在 JSON 主体中呈现为真实的 JSON 数字,例如 5,但也可能呈现为字符串,例如 “5”。 或者将整数的数字呈现为浮点数,例如 5.0,甚至是 “5.0”。

coerce 尝试清除不匹配的数值以适配字段的数据类型。 例如:

  • 字符串将被强制转换为数字,比如 "5" 转换为整型数值5
  • 浮点将被截断为整数值,比如 5.0 转换为整型值5
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT my_index
{
  "mappings": {
    "properties": {
      "number_one": {
        "type": "integer"
      },
      "number_two": {
        "type": "integer",
        "coerce": false
      }
    }
  }
} 

PUT my_index/_doc/1
{
  "number_one": "10"
} 
PUT my_index/_doc/2
{
  "number_two": "10"
}

在上面的例子中,我们定义 number_one 为 integer 数据类型,但是它没有属性 coerce 为 false,那么当我们把 number_one 赋值为"10",也就是一个字符串,那么它自动将"10"转换为整型值10。针对第二字段 number_two,它同样被定义为证型值,但是它同时也设置 coerce 为 false,也就是说当字段的值不匹配的时候,就会出现错误。

运行上面的结果是:

  • number_one 字段将包含整数10。
  • 由于禁用了强制,因此该文档将被拒绝

Index 级默认设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT my_index
{
  "settings": {
    "index.mapping.coerce": false
  },
  "mappings": {
    "properties": {
      "number_one": {
        "type": "integer",
        "coerce": true
      },
      "number_two": {
        "type": "integer"
      }
    }
  }
} 
PUT my_index/_doc/1
{
  "number_one": "10"
}  
PUT my_index/_doc/2
{
  "number_two": "10"
} 

本文系转载,前往查看

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

本文系转载,前往查看

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Elasticsearch:Elasticsearch 中的数据强制匹配
在实际的使用中,数据并不总是干净的。 根据产生方式的不同,数字可能会在 JSON 主体中呈现为真实的 JSON 数字,例如 5,但也可能呈现为字符串,例如 “5”。 或者,应将应为整数的数字呈现为浮点数,例如 5.0,甚至是 “5.0”。
腾讯云大数据
2020/10/29
3.7K0
Elasticsearch:Elasticsearch 中的数据强制匹配
ElasticSearch 6.x 学习笔记:14.mapping参数
官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/6.1/mapping-params.html ElasticSearch提供了丰富的映射参数对字段的映射进行参数设计,比如字段的分词器、字段权重、日期格式、检索模型等等。
程裕强
2022/05/06
1.3K0
Elasticsearch 数值类型也能存String 类型,有点意思~
最近经常遇到遇到某个客户问数值类型的字段也能存字符串,或者说已经将字段类型设置成了float,但是实际存储的仍然是字符串,该如何解决,今天花点时间我们来梳理整个流程。
南非骆驼说大数据
2022/01/02
2.8K3
Elasticsearch 6.x Mapping设置
需要注意的是,在索引中定义太多字段可能会导致索引膨胀,出现内存不足和难以恢复的情况,下面有几个设置:
小旋锋
2019/01/21
3.2K0
Elasticsearch数据类型及其属性
dynamic和data_detection的详解:Elasticsearch dynamic mapping(动态映射) 策略.
双面人
2019/08/30
10.5K0
一起学 Elasticsearch 系列 -Mapping
本篇讲解Elasticsearch中非常重要的一个概念:Mapping,Mapping是索引必不可少的组成部分。
BookSea
2023/11/13
6420
一起学 Elasticsearch 系列 -Mapping
Elasticsearch Mapping parameters(主要参数一览)
指定分词器。elasticsearch是一款支持全文检索的分布式存储系统,对于text类型的字段,首先会使用分词器进行分词,然后将分词后的词根一个一个存储在倒排索引中,后续查询主要是针对词根的搜索。
丁威
2019/06/10
2.5K0
ElasticSearch数据类型Date介绍
本文主要简单介绍ES中的数据类型Date相关概念,希望对大家学习和理解ES有所帮助。
xdd
2022/07/12
2K0
Elasticsearch 学习笔记
es提供了一个测试分词的 api 接口,方便验证分词效果,endpoint 是 _analyze
学徒漠筱歌
2022/07/17
6480
Springboot2.x整合ElasticSearch7.x实战(三)
还没开始的同学,建议先读一下系列攻略目录:Springboot2.x整合ElasticSearch7.x实战目录
JavaPub
2021/01/10
3.7K1
Springboot2.x整合ElasticSearch7.x实战(三)
ELK专栏之ES索引-04
● 在生产上,我们需要自己手动建立索引和映射,是为了更好的管理索引,就像数据库的建表数据一样。
大忽悠爱学习
2022/09/29
7020
ELK专栏之ES索引-04
Elasticsearch Mapping之字段类型(field datatypes)
long、integer、short、byte、double、float、half_float、scaled_float。
丁威
2019/06/10
12.8K0
Elasticsearch:Dynamic mapping
Elasticsearch 最重要的功能之一是它试图摆脱你的方式,让你尽快开始探索你的数据。 要索引文档,你不必首先创建索引,定义映射类型和定义字段 - 你只需索引文档,那么 index,type 和 field 将自动生效。比如:
腾讯云大数据
2020/09/28
8770
Elasticsearch:Dynamic mapping
学好Elasticsearch系列-Mapping
这篇讲解Elasticsearch中非常重要的一个概念Mapping,Mapping是索引必不可少的组成部分。
BookSea
2023/07/26
5620
学好Elasticsearch系列-Mapping
【ES三周年】elasticsearch 常用数据类型详解和范例
本篇文章主要讲解elasticsearch在业务中经常用到的字段类型,通过大量的范例来学习和理解不同字段类型的应用场景。范例elasticsearch使用的版本为7.17.5。
张同学tty
2023/04/08
4.2K0
【ES三周年】elasticsearch 常用数据类型详解和范例
Elasticsearch Dynamic Mapping(动态映射机制)
执行上述请求时,索引"data"不必预先创建,该API首先会自动创建索引data、类型映射_doc,其映射类型下包含字段count,其类型为long。自动根据文档的值推测其类型的过程,就是本文要重点描述的机制:动态类型映射机制。动态映射机制包含如下两种映射规则:
丁威
2019/06/10
3.1K0
Elasticsearch从入门到放弃:瞎说Mapping
前面我们聊了 Elasticsearch 的索引、搜索和分词器,今天再来聊另一个基础内容—— Mapping。
Jackeyzhe
2020/08/05
1K0
干货 | Elasticsearch5.X Mapping万能模板
0、引言 在关系型数据库如Mysql中,设计库表需要注意的是: 1)需要几个表; 2)每个表有哪些字段; 3)表的主键及外键的设定——便于有效关联。 表的设计遵守范式约束,考虑表的可扩展性,避免开发后期对表做大的改动。 Mysql或者Oracle中,修改数据类型相对比较简单,通过命令行或者navicat、sqldeveloper等可视化工具直接修改。 即便千万级别数据量,多等点时间,也能修改好。 而在Elasticsearch非关系型数据存储的搜索引擎中,设计表对应的就是Mapping的设计。 且ES中一旦
铭毅天下
2018/03/20
3.2K0
干货 | Elasticsearch5.X Mapping万能模板
Elasticsearch的Index和Mapping(二)
本文使用的Elasticsearch版本为6.5.4,基本命令以及操作大都通用。下面通过MySQL与Elasticsearch的对比图,让我们更好地理解接下来的增删改操作。
用户3467126
2020/02/25
2.9K0
Elasticsearch的Index和Mapping(二)
触类旁通Elasticsearch:操作
映射里包含了一个索引的文档中所有字段的定义,并告诉ES如何索引一篇文档的多个字段。例如,如果一个字段包含日期,可以定义哪种日期格式是可以接受的。映射的概念类似于DB中的表字段定义。
用户1148526
2019/05/25
3.5K0
相关推荐
Elasticsearch:Elasticsearch 中的数据强制匹配
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验