2014年6月25日 星期三

[elasticsearch]date_detection false


動態的mapping


動態的新增欄位與 type ,在elasticsearch 是個非常直覺的行為。
上文有先說明過,關於在 elasticsearch put 欄位的資料時,這個欄位的mapping 會依據他第一次 index 資料時欄位的 type 來當預設值。

所以,預設的 dynamic mapping 是開啟的。但是可能會發生,我們非預期的情況。date 資訊就是常見的一種,有時我們欄位的值,並不是 date 欄位,但是 elasticsearch會幫我們判定成 date。

舉個例子來說, 在索引時note欄位第一次出現的值,被判定為 date。
{"note":"2014-06-25"}

再來的資料是,

{"note":"this is note"}

會發生 note的 type已經被定為 date ,但是,但是你要index 的 value 的情況。(會出現 malformed date)

此時,就可以關掉預設 "date_detection" ,讓 elasticsearch 不會自動幫我們把 string 裡面的值判定成 date type。
(原始的 type 可參照之前文章)

PUT /my_index{
    "mappings": {
        "my_type": {
            "date_detection": false
        }
    }
}


cf.


peicheng-note: elasticsearch 相關 elasticsearch文章
http://peichengnote.blogspot.tw/search/label/elasticsearch
peicheng note: [elasticsearch] 再談 _all field
peicheng note: [elasticsearch]range query depends on the field type

peicheng-note: [elasticsearch] document id _id field uuid
http://peichengnote.blogspot.tw/2014/05/elasticsearch-document-id-id-field-uuid.html
peicheng-note: [elasticsearch/logstash] logstash id 自動產生 document id "_id" automatic id generation
http://peichengnote.blogspot.tw/2014/04/elasticsearchlogstash-logstash-id.html
Customising dynamic mapping
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html
Root Object Type
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-root-object-type.html

沒有留言:

張貼留言