ElasticSearch(Mapping相关)

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述ElasticSearch:Mapping相关相关的知识,希望能为你提供帮助。

  • Mapping
类似数据库中的表结构定义,主要作用如下:
  1. 定义Index下的字段名(Field Name)。
  2. 定义字段类型,例如数值型、字符串型、布尔型等。
  3. 定义倒排索引相关配置,比如是否索引、记录position等。
 
ElasticSearch(Mapping相关)

文章图片

 
  • 查看一个Index的Mapping的API
例如查看index为test_index的mapping,使用_mapping,查询结果中:
doc是这个index的type,忽略,ES6.X将废弃。
关注properties中的内容,每个字段及其字段类型(type) 。
ElasticSearch(Mapping相关)

文章图片
 
 
  • 自定义一个Index的Mapping的API
  Mapping中的字段类型一旦设定后,禁止直接修改,因为底层基于Lucene实现的倒排索引生成后不允许修改。如果要修改,需要重建新的索引,然后做reindex操作。
ElasticSearch(Mapping相关)

文章图片

 
  • dynamic参数

  index级别的设置。
- true,默认值,允许自动新增字段
- false,不允许自动新增字段,新增字段的document可正常写入ES,但无法对新增字段查询
- strict,不允许自动新增字段,新增字段的document写入ES直接报错。
 
  • copy_to

  字段级别的设置。
可以将多个已有字段都copy_to到 1个新字段,这样新生成的字段不占用存储,且方便查询。
ElasticSearch(Mapping相关)

文章图片

 
  • index
  字段级别的设置。
设置该字段是否可以被搜索,一般敏感信息字段设置为false,还可以节省倒排索引存储空间。
【ElasticSearch(Mapping相关)】
ElasticSearch(Mapping相关)

文章图片

 
  • index_options
  字段级别的设置。
设置倒排索引记录的内容。
ElasticSearch(Mapping相关)

文章图片

ElasticSearch(Mapping相关)

文章图片

 
ElasticSearch(Mapping相关)

文章图片

 
  • null_value
  字段级别的设置。
该字段录入ES的字段值为null时,可设置默认值。
 
ElasticSearch(Mapping相关)

文章图片

 
  • dynamic_date_formats
  字段级别的设置。
指定dynamic_date_formats可以让入库日期为date类型,否则有可能会是text类型。
ElasticSearch(Mapping相关)

文章图片

 
  • 动态模板Dynamic Mapping
  目的:通用配置形成模板,简化mapping配置,减少配置工作量。
ElasticSearch(Mapping相关)

文章图片

ElasticSearch(Mapping相关)

文章图片

生产实践举例:
1.所有字符串类型默认都设置为keyword,即默认不分词,节约资源。
ElasticSearch(Mapping相关)

文章图片

2.以message开头的字段设置为text,需要建立倒排索引分词检索。
 
ElasticSearch(Mapping相关)

文章图片

3.double类型设定为float,节省存储空间。
ElasticSearch(Mapping相关)

文章图片

4.支持设置多个动态模板,是从上至下执行的,只要匹配到就结束匹配。
ElasticSearch(Mapping相关)

文章图片

 
  • 索引模板Index Template
目的:类似于数据库的建表和定义表结构语句,固化索引创建操作,新建索引时自动应用预先设定的动态模板和mappings。
设置index_patterns参数,支持模式匹配索引。
支持配置多个索引模板,order大的优先级高。
ElasticSearch(Mapping相关)

文章图片

查看和删除索引模板
ElasticSearch(Mapping相关)

文章图片

 
 
 
 

    推荐阅读