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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(4)


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


同时还能配置大量国际标准的时间格式比如:epoch_millis、basic_date、basic_date_time、

strict_date_optional_time_nanos 等,所有可选项可以参照官方文档https://www.elastic.co/guide/en/elasticsearch/reference/7.10/mapping-date-format.html


# 创建测试索引
PUT test-dynamic-mapping
{
  "mappings": {
    "dynamic": true,
    "dynamic_date_formats": ["MM/dd/yyyy"]  # 识别MM/dd/yyyy格式的时间
    "properties": {
      "field1":{
        "type": "keyword"
      }
    }
  }
}
# 插入数据
PUT test-dynamic-mapping/_doc/1
{
  "date":"09/25/2015",
  "date1":"2015/09/25"
}
# 查看mapping变化
{
  "test-dynamic-mapping" : {
    "mappings" : {
      "dynamic" : "true",
      "dynamic_date_formats" : [
        "MM/dd/yyyy"
      ],
      "properties" : {
        "date" : {          # 符合MM/dd/yyyy格式的字符串识别为了date类型
          "type" : "date",
          "format" : "MM/dd/yyyy"
        },
        "date1" : {        # 符合默认yyyy/MM/dd 格式的字符串识未正确识别
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "field1" : {
          "type" : "keyword"
        }
      }
    }
  }
}

动态模板(Dynamic templates)

 

Elasticsearch 的动态字段映射(Dynamic field mappings)虽然使用简单,但往往不满足现实的业务场景,比如对于整型字段,往往用不着 long 类型,使用 integer 类型就足够了;对于字符串类型的字段,我们希望细化分词方式,而不是使用默认分词,以及对于不同字段采用不同的分词方式等。这时可以使用动态模板(Dynamic templates)功能来实现上述需求。

 

动态模板允许你在创建 mapping 时,设置自定义规则。当新字段满足该规则时,则按照预先的配置来创建字段。

 

Elasticsearch 允许用户通过3个角度来定义规则:新字段的数据类型,属性名和路径。创建 mapping 时可以通过dynamic_templates字段配置多个动态模板。

模板的整体结构如下:

{
  "mappings":{
    "dynamic_templates": [
      {
        "templateName":{   #1
          ……匹配规则……        # 2
          "mapping": { ... } #3      
        }
      }
     ]
  }
}

1、#1 处定义了动态模板的名称,每个动态模板都需要配置名字,本例中配置的模板名称为

templateName

2、#2 处可以使用match_mapping_typematchunmatchmatch_pattern、path_matchpath_unmatch来配置该模板的匹配规则,规则可以是多个,规则之间是的关系

3、#3 处配置的是符合该规则的字段使用的 mapping 配置,此处与正常创建字段相同,主要需要配置typeanalyzer



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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
9月前
|
存储 虚拟化 iOS开发
VMware ESXi 8.0U3c 发布 - 领先的裸机 Hypervisor
VMware ESXi 8.0U3c 发布 - 领先的裸机 Hypervisor
307 3
VMware ESXi 8.0U3c 发布 - 领先的裸机 Hypervisor
|
9月前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
407 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
9月前
|
前端开发 API
企业及图文视频内容
企业及图文视频内容
|
数据可视化 关系型数据库 数据库
告别破解版烦恼!Navicat Premium Lite免费版它来了
作为一名后端开发者,在开发过程中使用可视化工具查看数据库中的数据是我们的基本操作。Navicat作为一款广受欢迎的数据库连接工具,深受我们喜爱和挑战。我们喜爱它强大的功能和直观的操作习惯,但又对它的收费模式感到不满。个人使用可以通过破解解决,然而在公司环境下,由于侵权问题,我们通常被禁止使用,这令我们感到很不便。然而,最近Navicat推出了一款免费的产品——Navicat Premium Lite。
2235 1
告别破解版烦恼!Navicat Premium Lite免费版它来了
|
12月前
|
程序员 编译器
详解 C 标准库 - <limits.h>
`&lt;limits.h&gt;` 是 C 标准库中的头文件,定义了各种基本数据类型的大小限制和特性,如 `CHAR_BIT`、`CHAR_MIN`、`CHAR_MAX` 等,涵盖了整数和字符类型的极限值。它提供了关键的宏常量,帮助程序员理解变量范围,确保代码的正确性和可移植性。
|
IDE 开发工具 Python
dsw
dsw
440 0
|
搜索推荐 Python Windows
|
存储 消息中间件 SQL
Apache Flink 在国有大型银行智能运营场景下的应用
建信金融科技开发工程师周耀在 FFA 2021 的分享
Apache Flink 在国有大型银行智能运营场景下的应用
|
关系型数据库 MySQL Linux
虚拟机下安装mysql(按相应步骤操作 / 图文)上
虚拟机下安装mysql(按相应步骤操作 / 图文)上
910 0
虚拟机下安装mysql(按相应步骤操作 / 图文)上
|
Windows
windows扩容不相邻的磁盘
环境:将一块云盘分成了2个区,一个C盘一个D盘,然后C盘不够用了,windows系统不能直接扩容,需要借助工具来操作。
569 1
windows扩容不相邻的磁盘