Elasticsearch 动态映射——自动检测

ES中有一个很是重要的特性——动态映射,即索引文档前不须要建立索引、类型等信息,在索引的同时会自动完成索引、类型、映射的建立。html

那么什么是映射呢?映射就是描述字段的类型、如何进行分析、如何进行索引等内容。app

本篇就着重讲述下,ES中映射的自动检测特性。curl

更多内容参考:Elastisearch知识总结url

字段自动检测

在某个字段第一次出现时,若是以前没有定义过映射,ES会自动检测它可能知足的类型,而后建立对应的映射。spa

JSON数据code

ES中的数据类型orm

nullhtm

不会添加字段blog

true or false索引

boolean

floating point number

double

integer

long

object

object

array

依赖于第一个非null得值

string

若是经过了date检测,则为date

若是经过了numeric检测,则为Number

上面就是类型自动检测的结果,除了上面列出的基本类型,其余的高级的类型好比geo,ip就须要手动指定了。

日期自动检测

日期自动检测,即date_detection是默认开启的,所以只要符合默认的日期格式,就能够自动建立成date类型

日期的格式为:

[ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]

例如:

$ curl -XPUT localhost:9200/test/test/1 -d '{"create":"2015/11/11"}' {"_index":"test","_type":"test","_id":"1","_version":1,"created":true} $ curl -XGET localhost:9200/test/_mapping?pretty { "test" : { "mappings" : { "test" : { "properties" : { "create" : { "type" : "date", "format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd" } } } } } }

能够经过修改dynamic_date_formats 修改日期格式:

PUT my_index { "mappings":{ “my_type":{"dynamic_date_formats":["MM/dd/yyyy"]}
 } } PUT my_index/my_type/1{"create_date":"09/25/2015"}

数字自动检测

数字自动检测,即numeric_detection默认是关闭的。所以须要手动打开:

PUT my_index {"mappings":{"my_type":{"numeric_detection":true}}}

当执行索引操做时,若是符合float型,就会自动建立为float

long型也是同样:

相关文章
相关标签/搜索