带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)

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

3.4.2.17.2.Schemaless


创作人:王福强

审稿人:欧阳楚才

 

Elasticsearch 一个重要特点是简化用户操作,让你尽快开始探索数据。 要写入文档,你不用先创建索引、定义映射类型和定义字段 - 你可以只索引文档,那么 index、type 和 field 将自动生成。


PUT data/_doc/1 
{ "count": 5 }

上面的命令将自动帮我们生成一个叫做 data 的 index,并同时生成一个叫做count的 field。count 的数据类型是 long。

 

自动检测和添加新字段称为动态字段映射。动态字段映射规则可以根据动态模板自由定制:

 

l 动态字段映射:动态字段检测的规则。

l 动态模板:用于配置动态添加字段映射的自定义规则。

 

动态字段映射

 

当 Elasticsearch 在文档中检测到新字段时,它默认动态地将该字段添加到类型映射中。

你可以使用 dynamic 属性(四个选项)控制添加到映射的新字段的效果:

 

 

 image.png


上面的表格显示,当一个新的字段被添加到一个索引中,并且这个字段之前没有在 mapping 中定义:

 

l 在 dynamic 为 true 时,这个文档将被建立索引,从而新增加的字段将是可以被搜索及应用于聚合,mapping 也会自动更新

l 在 dynamic 为 false 时,这个文档将被建立索引,但是新的字段将不被建立索引,mapping 将不被更新(包含新的字段的mapping)

l 在 dynamic 为 strict 时,这个文档将不被建立索引

l 在 dynamic 为 runtime 时,这个文档将被建立索引,而且这个 runtime 字段可以被搜索,但是字段没有被分词。关于 runtime 请参阅官方文档:Map a runtime field

 

提示:你可以使用 update mapping API 更新现有字段的 dynamic 设置。

 

你可以自定义日期检测和数值检测的动态字段映射规则。 要定义可应用于其他动态字段的自定义映射规则,请使用 dynamic_templates。

 

日期检测

 

如果 date_detection 已启用(默认),则检查新字符串字段以查看其内容是否与 dynamic_

date_formats 中指定的任何日期模式匹配。 如果找到匹配项,则会添加一个具有相应格式的新日期字段。

 

dynamic_date_formats 的默认值为:


[ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]

 

动态模板

 

动态模板允许你在默认动态字段映射规则基础上更好地控制 Elasticsearch 如何映射你的数据。 你可以通过将 dynamic 参数设置为 true 或 runtime 来启用动态映射。 然后,你可以使用动态模板来定义自定义映射,这些映射可以根据匹配条件应用于动态添加的字段:

 

l match_mapping_type 对 Elasticsearch 检测到的数据类型进行操作

l match 和 unmatch 使用正则来匹配字段名称

l path_match 和 path_unmatch 对字段的路径进行操作

l 如果动态模板没有定义 match_mapping_type、match 或 path_match,它将不会匹配任何字段。

 

动态模板由命名对象的数组来定义的:


"dynamic_templates": [
    {
      "my_template_name": { (1)
        ... match conditions ... (2)
        "mapping": { ... } (3)
      }
    },
    ...
  ]

1、template 的名字可以是任何一个字符串

2、匹配的条件可以是这里的任何一种 match_mapping_type , match , match_pattern ,  unmatch , path_match , path_unmatch

3、被匹配的字段的 mapping

 以下请求定义了一个名为 strings_as_ip 的动态模板。 当 Elasticsearch 检测到与 ip* 模式匹配的新字符串字段时,它会将这些字段映射为 ip 类型的运行时字段。 因为 ip 字段不是动态映射的,所以你可以将此模板与 "dynamic":"true" 或 "dynamic":"runtime" 一起使用。

 

PUT my-index-000001/
{
  "mappings": {
    "dynamic_templates": [
      {
        "strings_as_ip": {
          "match_mapping_type": "string",
          "match": "ip*",
          "runtime": {
            "type": "ip"
          }
        }
      }
    ]
  }
}



《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.2.Schemaless(下) https://developer.aliyun.com/article/1230157

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
278 0
|
SQL 自然语言处理 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
352 0
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
115 0
|
存储 算法 数据处理
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(2)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(2)
141 0
|
存储 Kubernetes 数据可视化
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(4)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(4)
135 0
|
存储 前端开发 数据可视化
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(3)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(3)
145 0
|
监控 数据可视化 安全
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(5)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(5)
139 0
|
存储 JSON 安全
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(1)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(1)
183 0
|
数据采集 数据可视化 搜索推荐
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(上)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(上)
247 0
|
存储 安全 数据可视化
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(中)
带你读《Elastic Stack 实战手册》之3:——3.1.1.从 Elasticsearch 到 Elastic Stack(中)
180 0