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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
缓存 前端开发 测试技术
antd renderFormItem AutoComplete结合防抖导致防抖失效的解决办法
antd renderFormItem AutoComplete结合防抖导致防抖失效的解决办法
222 3
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
Java
Filebeat日志采集器实例 1
Filebeat日志采集器实例
303 1
|
移动开发 前端开发 JavaScript
高级前端工程师必备的技能
【7月更文挑战第8天】 **高级前端工程师**精通HTML5/CSS3/JavaScript,擅长React、Vue等框架,掌握性能优化、代码质量保证,能设计可扩展架构,处理前端安全,熟悉跨平台开发,持续学习新技术并领导团队,是技术与管理的结合体。他们对提升用户体验和推动技术创新起关键作用。
1175 12
|
存储 监控 安全
Linux日志管理工具:Logrotate(一)
Linux日志管理工具:Logrotate(一)
861 0
|
存储 NoSQL 大数据
【MongoDB】GridFS机制
【4月更文挑战第2天】【MongoDB】GridFS机制
|
资源调度 数据可视化 前端开发
基于mathlive从零将公式编辑器集成到可视化搭建平台
基于mathlive从零将公式编辑器集成到可视化搭建平台
388 0
|
监控 算法 调度
最佳实践:时间片轮转算法在文档管理软件中的高效运用
大家知道那个时间片轮转算法吗?它是操作系统中的一种超级常见的调度法,它的目标是要公平地分配资源,避免咱们等个半天。如果你想在咱们的文档管理软件上使用这个算法来提升点儿效率,可以按照下面的玩法来操作——
198 0
|
Java Maven 开发者
又遇到maven jar包冲突了,如何快速解决
又遇到maven jar包冲突了,如何快速解决
369 0
|
编解码 物联网 测试技术
使用 PAI-Blade 优化 Stable Diffusion 推理流程(二)
本篇我们继续介绍使用 PAI-Blade 优化 LoRA 和 Controlnet 的推理流程。相关优化已经同样在 registry.cn-beijing.aliyuncs.com/blade_demo/blade_diffusion镜像中可以直接使用。同时,我们将介绍 Stable-Diffusion-webui 中集成 PAI-Blade 优化的方法。