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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
JSON 数据格式
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(5)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(5)
|
存储 Java 大数据
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(6)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(6)
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(3)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(3)
|
索引
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(2)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(2)
|
索引
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(1)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(1)
|
搜索推荐 API 索引
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(下)
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(下)
|
数据格式 索引
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(中)
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(中)
|
存储 JSON 数据库
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(上)
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(上)
|
存储 API 索引
带你读《Elastic Stack 实战手册》之26:——3.4.2.11.Index alias(6)
带你读《Elastic Stack 实战手册》之26:——3.4.2.11.Index alias(6)
|
索引
带你读《Elastic Stack 实战手册》之26:——3.4.2.11.Index alias(4)
带你读《Elastic Stack 实战手册》之26:——3.4.2.11.Index alias(4)