前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch:Elasticsearch 中的数据强制匹配

Elasticsearch:Elasticsearch 中的数据强制匹配

作者头像
腾讯云大数据
修改2021-01-08 16:12:00
3.3K0
修改2021-01-08 16:12:00
举报

腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景


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

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

  • 字符串将被强制转换为数字,比如 "5" 转换为整型数值5
  • 浮点将被截断为整数值,比如 5.0 转换为整型值5

例如:

代码语言:javascript
复制
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 级默认设置

可以在索引级别上设置 index.mapping.coerce 设置,以在所有映射类型中全局禁用强制:

代码语言:javascript
复制
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" } 

上面的运行结果是:

  • number_one 字段将覆盖索引级别设置以启用强制。该文档将被接受
  • 该文档将被拒绝,因为 number_two 继承了索引级强制设置。

参考:

【1】https://www.elastic.co/guide/en/elasticsearch/reference/current/coerce.html#coerce


最新活动

包含文章发布时段最新活动,前往ES产品介绍页,可查找ES当前活动统一入口

Elasticsearch Service自建迁移特惠政策>>

Elasticsearch Service 新用户特惠狂欢,最低4折首购优惠 >>

Elasticsearch Service 企业首购特惠,助力企业复工复产>>

关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景
  • Index 级默认设置
  • 最新活动
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档