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型也是同樣:

相關文章
相關標籤/搜索