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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 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

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