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

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

3.4.2.10.Dynamic Mapping

创作人:骆潇龙

 

通常来说,搜索数据一般需要经过 3 个步骤:

 

l 定义数据(建表建索引)

l 录入数据

l 搜索数据

 

在现实使用中,定义数据往往是比较繁琐,并且有大量的重复操作。

 

Elasticsearch 本着让用户使用更方便快捷的原则,针对这个问题做了很多工作,使定义数据的方式更加抽象灵活,多个雷同的字段可使用 1 个配置完成。

 

比较有代表性的2个功能分别是:

 

l 索引模板(index template):可以根据规则自动创建索引。

l 动态映射(dynamic mapping):自动将新字段添加到映射中。

 

本小节我们着重介绍动态映射(dynamic mapping)

 

根据官方的定义动态映射可以自动检测和添加新字段(field)到映射(mapping)中。动态映射可以通过基础属性自动发现(Dynamic field mappings)以及复杂属性动态生成(Dynamictemplates)2个方式实现此功能。

 

动态字段映射(Dynamic field mappings)

 

在默认情况下,当索引一个文档时有字段是在映射中没有配置的,那么 Elasticsearch 将会根据该属性的类型,自动将其增加到映射中。该功能可以通过配置dynamic来控制打开。



该配置可以接受以下 3 种选择:

 

l true:默认配置,新字段将会自动加入映射中,并自动推断字段的类型。

l false:新字段不会增加到映射中,因此不能被搜索,但是内容依然会保存在_source中。如无特殊需要建议都配置为 false,这样可以避免写入流程经过 master 节点,从而提高性能。

l strict:索引文档时如果发现有新字段则报错,整个文档都不会被索引。

 

该配置可以在创建 mapping 时在根层配置,表示对所有属性适用。也可以每个内嵌对象

(inner object)中配置,表示仅对该对象适用。

 

示例如下

# 创建 test-dynamic-mapping
PUT test-dynamic-mapping
{
  "mappings": {
    "dynamic": false, # 1
    "properties": {
      "person":{
        "dynamic": true, # 2
        "properties": {
          "name":{
            "type":"keyword"
          }
        }
      },
      "company":{
        "dynamic": "strict",  # 3
        "properties": {
          "company_id":{
            "type":"keyword"
          }
        }
      }
    }
  }
}



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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
数据采集 存储 数据可视化
【python】python二手房数据抓取分析可视化(源码)【独一无二】
【python】python二手房数据抓取分析可视化(源码)【独一无二】
【python】python二手房数据抓取分析可视化(源码)【独一无二】
|
XML Java 数据格式
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
424 0
|
8月前
|
传感器 监控 算法
从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡
从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡
575 4
从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
12月前
|
人工智能 关系型数据库 Serverless
【满血+高速+不限流+超长上下文+知识库+可定制+可分享】阿里云专属DeepSeek R1极速部署教程
本文教您在阿里云部署专属DS服务,实现满血、高速、不限流和超长上下文,支持知识库分享与客服等应用。基于阿里云百炼和云应用开发平台(CAP),通过AgentCraft平台一键部署,简单易用,适合普通用户。您可以轻松搭建家庭医生助理、行业动态机器人或图画工具等,享受高效AI服务。
【满血+高速+不限流+超长上下文+知识库+可定制+可分享】阿里云专属DeepSeek R1极速部署教程
|
前端开发 架构师 算法
技术一号位的方法论《个人篇》——人成长的本质以及如何构建个人成长路线图
不论你是职场新人还是35岁的职场“老人”,成长是每个职场人都绕不开的话题,同时也是贯穿每个人职业生涯的痛点。本文主要帮助读者建立起对个人成长的认知,然后在此认知的基础上让大家理解成长的本质,最终通过文章的引导,来帮助读者完成个人成长路线图的确定以及落地实践。
14159 3
技术一号位的方法论《个人篇》——人成长的本质以及如何构建个人成长路线图
|
缓存 移动开发 算法
[计算机网络(第八版)]第三章 数据链路层(学习笔记)
[计算机网络(第八版)]第三章 数据链路层(学习笔记)
|
NoSQL 算法 MongoDB
一文搞定分布式系统ID生成方案
一文搞定分布式系统ID生成方案
245 0
|
网络协议 网络虚拟化 网络架构
路由器配置静态和默认路由实现VLAN之间的通信
路由器配置静态和默认路由实现VLAN之间的通信
469 0

热门文章

最新文章