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

简介: 带你读《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并实现搜索。  
相关文章
|
存储 算法 Java
JAVA后端开发面试题库
JAVA后端开发面试题库
323 1
|
存储 搜索推荐 NoSQL
2021-Java后端工程师面试指南-(Elasticsearch)(上)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
305 0
|
14天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
5498 28
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
9天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1119 1
|
6天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
836 1
|
16天前
|
人工智能 自然语言处理 供应链
|
22天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3800 15

热门文章

最新文章