Elasticsearch动态模板设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch动态模板设置相关的知识,希望对你有一定的参考价值。

参考技术A 在我们最开始使用ES的时候,可能还不太了解mapping,也没有添加过mapping为什么我们还是能够正常的添加文档。

那是因为ES可以动态映射,添加文档的时候遇到没有的字段,可以动态的添加到mapping中,下面是一些默认的mapping方式。

| 数值 | 如果缺失在mapping中添加类型 |
| null | 空值不添加类型到mapping |
| true、false | 添加一个boolean类型 |
| 浮点数 | 添加一个floating类型 |
| 整数 | 添加一个long类型|
| object | 添加一个object类型 |
| array | 根据数组第一个元素决定类型 |
|字符串 | 可能被映射为date、double、long、text、keyword类型 |
注意:

数字类型默认的是被映射为long而不是integer
字符串可以被映射为多种类型,主要看内容
我们可以自定义字符串映射为日期的格式

如果觉得ES默认的mapping方式对于自己的业务来说还有优化空间,我们就可以自定义的动态mapping方式定制映射方式。

根据字段类型匹配通过 match_mapping_type 属性来控制,当添加文档的时候,ES的JsonParser解析出来的类型是match_mapping_type指定的类型,就会使用对应的mapping

根据字段名称映射使用的是 match、unmatch、match_pattern 属性来控制。

按路径匹配使用的是 path_match、path_unmatch 属性来指定。

添加动态索引有2种方式:
第一种就是为索引添加mapping的时候同时指定动态映射的mapping。
第二种就是在索引模板中指定。

前面我们已经看了在添加索引mapping的时候指定,下面我们就来看一下在设置索引模板的时候指定。

如上所示,就是在索引模板中最常见的属性了:
order:当索引名称匹配到多个索引模板的时候,换选择order值大的
index_patterns:索引名称匹配表达式,例如,所用以名称以test开头的都可以匹配到test*
settings:索引配置
mappings:默认的mapping

ElasticSearch之动态映射和模板


1 类型确定机制

  • mappings

    • numeric_detection

    • dynamic :是否支持动态添加字段


2 动态模板(dynamic_templates:基于字段)

希望根据不同情形,如JSON格式中的字段名称和字段类型,来确定不同类型。



3 索引模板(index template)


以上是关于Elasticsearch动态模板设置的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch之动态映射和模板

ElasticSearch之动态映射和模板

ElasticSearch速学 - IK中文分词器远程字典设置

ElasticsearchElasticsearch 动态模板(Dynamic templates)

Elasticsearch 更改已有字段的数据类型,清洗数据

ElasticSearch第一天