带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(5)

简介: 带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(5)

 《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.10.Dynamic Mapping(4) https://developer.aliyun.com/article/1230516



下面我们通过几个例子来说明一下匹配规则中的各个关键字如何使用。

 

match_mapping_type

 

match_mapping_type用于按照数据类型匹配,当用户想对 JSON 中具有某种数据类型的字段设置做特殊配置时,可以用此种匹配方式。该字段可配置的数据类型有如下几种:

 

l boolean,匹配值是 true 或 false 的字段。

date,当字符串开启了时间类型识别且字符串符合预设日期格式则会被匹配

l double,匹配含有小数的字段

l long,匹配值是整型的字段

l object,匹配值是对象的字段

l string,匹配值是字符串的字段

l *,表示所有数据类型即匹配所有字段

 

之前我们提到 Elasticsearch 会自动将整型字段自动创建为long型,如果我们知道文档中所有数值都不会超过int范围,那么我们可以用如下配置,让所以非小数的数值字段自动创建为

integer类型。

 

PUT test-dynamic-mapping
{
  "mappings": {
    "dynamic_templates": [
      {
        "test_float": {
          "match_mapping_type": "long", # 值是整型的字段会被匹配
          "mapping": {
            "type": "integer"  # 字段 type 统一设为 integer
          }
        }
      }
    ]
  }
}

match 、unmatch

 

在生产使用中最多的场景,是根据字段的名称进行匹配。这时就可以用matchunmatch这两种匹配方式。match匹配的是符合设置的所有字段,unmatch匹配的是不符合某种配置的所有字段。在设置匹配规则时可以使用*表 0 个或多个字符。


比如下面这个模板就表示所有属性名以long_开头且不以_text结尾的字段配置其type为long。

PUT test-dynamic-mapping
{
  "mappings": {
    "dynamic_templates": [
      {
        "test_float": {
          "match": "long_*", # 属性名以 long_ 开头
          "unmatch": "*_test", # 属性名不以 _test 结尾
          "mapping": {
            "type": "long"  # 字段 type 设为 long
          }
        }
      }
    ]
  }
}

match_pattern

 

仅仅使用通配符,可能不能满足我们多变的匹配需求,那么我们可以将match_pattern设为

regex,这时match字段就可以用正则表达式了。

 

比如下面这个模板就表示所有以profit_开头,后跟至少 1 位数字的属性,将它们的type设为keyword

 

PUT test-dynamic-mapping
{
  "mappings": {
    "dynamic_templates": [
      {
        "test_float": {
          "match_pattern": "regex",  # match 使用正则表达式
          "match": "^profit_\d+$"  # 标准正则
          "mapping": {
            "type": "keyword"  # 字段 type 设为 keyword
          }
        }
      }
    ]
  }
}



《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.10.Dynamic Mapping(6) https://developer.aliyun.com/article/1230513

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
人工智能 物联网 测试技术
CodeFuse发布34B-4bit单卡4090可部署模型
CodeFuse 是蚂蚁集团自研的代码生成专属大模型,可以根据开发者的输入提供智能建议和实时支持,帮助开发者自动生成代码、自动增加注释、自动生成测试用例、修复和优化代码等,以提升研发效率。
1071 0
CodeFuse发布34B-4bit单卡4090可部署模型
|
网络协议 网络架构
【计算机网络】TCP|IP协议
【计算机网络】TCP|IP协议
505 0
|
JSON API 数据格式
淘宝天猫商品评论API接口指南
淘宝天猫商品评论API接口助您高效获取评论数据。首先注册淘宝开放平台账号并完成实名认证,接着创建应用、申请权限(如“tmall.item.evaluate.get”),最后用编程语言调用API。该接口支持多样化数据(用户昵称、评分、追评等)、灵活筛选与分页功能,并依托淘宝技术确保实时性和稳定性,满足数据分析需求。
644 11
|
前端开发 JavaScript Java
如何捕获和处理HTTP GET请求的异常
如何捕获和处理HTTP GET请求的异常
|
安全 Java
Qt单例:Qt有专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式
Qt单例:Qt有专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式
1616 0
|
人工智能 安全 数据挖掘
阿里云高级技术专家李鹏:AI基础设施的演进与挑战 | GenAICon 2024
阿里云高级技术专家、阿里云异构计算AI推理团队负责人李鹏将在主会场第二日上午的AI Infra专场带来演讲,主题为《AI基础设施的演进与挑战》。
|
弹性计算 人工智能 自然语言处理
【玩转AIGC系列】AIGC文本生成3D模型
本文介绍如何使用GPU云服务器搭建Stable Diffusion模型,并基于ModelScope框架和HRN人脸重建模型,实现使用文本生成3D模型。
【玩转AIGC系列】AIGC文本生成3D模型
|
Perl
马知恩周义仓编常微分方程定性与稳定性方法部分习题参考解答
第一章    基本定理   1设有 $$\bex \frac{\rd \bbx}{\rd t}=\bbf(t,\bbx),\quad \bbx(t_0)=\bbx^0,\quad (t_0,\bbx^0)\in \bbR\times \bbR^n.
5911 0

热门文章

最新文章