elasticsearc之mapping的介绍
? ? 為了能夠把日期字段處理成日期,把數字字段處理成數字,把字符串字段處理成全文本(Full-text)或精確的字符串值,Elasticsearch需要知道每個字段里面都包含了什么類型。這些類型和字段的信息存儲(包含)在映射(mapping)中。
? ?
Elasticsearch支持以下簡單字段類型:
| String | string |
| Whole number | byte,?short,?integer,?long |
| Floating point | float,?double |
| Boolean | boolean |
| Date | date |
?查看索引的mapping
[root@ELKServer es]# curl -GET "http://192.168.10.49:9200/site_test/test/_mapping"
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | { "site_test": ?????{ ?"mappings": ??????{ ??"test": ???????{ ???"properties": ????????{ ????????"@timestamp": ???????????{ ??????????????"type":"date", ??????????????"format":"strict_date_optional_time||epoch_millis" ???????????}, ?????????"count": ??????????{ ??????????????"type":"long" ???????????}, ??????????"brower": ??????????{ ??????????"type":"string" ??????????} ????????} ??????} ????} ??} } |
原創地址:http://irow10.blog.51cto.com/2425361/1851001
上面的mapping中我們可以看到這個索引中有三個變量,分別是date類型,long類型和string類型
我們也可以用其他方式查看mapping。用head插件查看索引的索引信息
其中string類型的字段是默認的,考慮到包含全文本,它們的值在索引前要經過分析器分析,并且在全文搜索此字段前要把查詢語句做分析處理。也就是說只要定義為string的字段默認會按照一個規則拆分字段。如:hello100 會拆分成 hello ?100兩個字段。漢字會拆成一個個的。這樣在畫圖是就尷尬了!
下圖是elasticsearch中head插件查詢到的數據
windows 8.1這個字段就是上面mapping對應的brower。類型是string。
我們在kibana的setting查看下site_test各個字段的信息
string類型的brower在analyzed(分析)這選項中打勾了!
現在我們用kibana畫圖試試看看會不會有什么異常
怎么windows和8.1分成兩個字段畫圖了,這不是我們想要的結果。那該如何解決呢?
自定義mapping
因為重新更改一個索引的mapping,必須新建索引。
先新建一個site_site索引
| 1 2 | [root@ELKServer?es]#?curl?-XPOST?http://192.168.10.49:9200/site_test {"acknowledged":true} |
把修改好的mapping放入一個文件類:mapping
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { ??"test": ???????{ ???"properties": ????????{ ?????????"@timestamp": ???????????????{ ??????????????"type":"date", ??????????????"format":"strict_date_optional_time||epoch_millis" ????????????????}, ??????????"count": ????????????????{ ???????????????"type":"long" ????????????????}, ???????????"brower": ????????????????{ ???????????????"type":"string", ???????????????"index":?"not_analyzed" ????????????????} ??????????} ??????} ??} |
對brower字段額外加個屬性not_analyzed(不分詞)!
| 1 2 3 4 | [root@ELKServer?es]#?curl?-XPOST?"http://192.168.10.49:9200/site_test/test/_mapping?pretty"?-d?'@mapping' { ??"acknowledged"?:?true } |
這樣就把索引和mapping都定義好了 然后在導入數據就不會出現分詞的情況!
備注:如果有多個_type,定義一個就好,其他的會按照定義好的格式去自己擴建mapping。
當然我們也可以把上面兩步做到一步到位。如下:
curl -XPUT 'http://192.168.10.49:9200/site_test' -d '@mapping'
上面這條命令能完成建立索引和mapping。
本文轉自 irow10 51CTO博客,原文鏈接:http://blog.51cto.com/irow10/1851001,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的elasticsearc之mapping的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipadmini5屏幕刷新率是多少
- 下一篇: i58400配什么显卡平衡