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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(3)

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



8、索引新文档时增加company.company_name字段

9、由于company对象dynamic:strict,所以创建文档的请求返回了 1 个strict_dynamic_mapping_exception错误

 

对于JSON 中的字段 遵循以下映射方式发现新属性。


image.png

image.png


对于 JSON 中的字符串字段,我们可以通过配置date_detection: truenumeric_detection:true尝试将它们转化成数值类型或时间类型,date_detection默认为 true,numeric_detection默认为 false。


在识别数字时,所有整型字符串会识别成long型,带小数的字符串会识别成float类型。默认情况下yyyy/MM/dd HH:mm:ssyyyy/MM/ddepoch_millis格式的字符串会识别成date类型。


# 创建测试索引
PUT test-dynamic-mapping
{
  "mappings": {
    "dynamic": true,
    "numeric_detection": true, # 1
    "properties": {
      "field1":{
        "type": "keyword"
      }
    }
  }
}
# 插入数据
PUT test-dynamic-mapping/_doc/1
{
  "date":"2021/05/01", # 2
  "float":"1.1", # 3
  "long":"1" # 4
}
# 查看 mapping 变化
GET test-dynamic-mapping
{
  "test-dynamic-mapping" : {
     "mappings" : {
      "dynamic" : "true",
      "numeric_detection" : true,
      "properties" : {
         "date" : {    # 5
          "type" : "date",
          "format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
        },
        "field1" : {
          "type" : "keyword"
        },
        "float" : {   #6
          "type" : "float"
        },
        "long" : {   # 7
          "type" : "long"
        }
      }
    }
  }
}

1、#1 处在创建索引时设置字符串可以自动识别为数值类型

2、#2 处 date 字段条是符合时间格式的字符串

3、#3 处 float 字段是符合小数格式的字符串

4、#4 处 long 字段是符合整型格式的字符串

5、#5 处 date 字段加入 mapping 并被自动识别成了 date 类型

6、#6 处 float 字段加入 mapping 并被自动识别成了 float 类型

7、#7 处 long 字段加入 mapping 并被自动识别成了 long 类型

 

Elasticsearch 识别日期字符串的格式,是可以通过dynamic_date_formats来配置。该字段支持使用ymdh等字符自定义格式,具体方式与 Java 中DateTimeFormatter对象实现的规则相同。

 


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

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