在ES中,mapping至關於表結構,主要功能是告訴ES的每個filed的數據類型,同時也告訴ES如何索引數據以及數據是否能被搜索到。html
ES有一個特色:能夠不提早設置index的mapping,直接能夠導入數據,而後ES會自動生成mapping表,指明每一個filed的類型以及索引方式,這個特色對於初學者很是友好,能夠直接將數據導入,而後快速檢索,可是自動生成的類型未必使咱們但願使用的類型,因此不設定mapping表就導入數據是一個很是不推薦的作法,頗有可能致使從新導入數據。java
mapping表一旦建立,只能追加,不能修改,若是要修改,須要刪掉整個文檔,因此新建index和type的時候,須要清晰的知道表結構。json
ES的版本更新較快,不一樣的版本的特性有必定的差別,對於elasticsearch5.4,沒有String這樣的數據類型,取而代之的是text和keyword,因此在用mapping的時候,最好閱讀最新的官方文檔 https://www.elastic.co/guide。app
首先,強烈不推薦不設定mapping表,讓ES自動識別。curl
能夠經過curl或者kibana或者java API等各類方式導入mapping表(以在kibana下爲例):elasticsearch
PUT /test { "settings": { "index": { "number_of_shards": "5", //分5個片 "number_of_replicas": "1" //1個備份 } }, "mappings": { "t1": { //這是其中一個mapping,你還能夠建立其餘mapping "properties": { "message": { "type": "text" }, "price": { "type": "double" }, "tid": { "type": "text" }, "user": { "type": "text" } } } } }
上述是一個簡單的mapping的設置,index爲test,type爲t1。ide
mapping的設置還有不少特性,具體能夠參閱官方文檔https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.htmlui