elasticsearch 之mapping
搭好elk 后,有时候会发现kibana 统计数据时,数据类型不对,这个时候就和elasticsearch的mapping有关,虽然我们可以用logstash修改传入es里的数据类型,比如 float 或者int 或者string。但是没有double等类型,就算转换了,你会发现写入es的数据还是根据es里mapping表来定义的。接下来我们来学习修改es的mapping,当然mapping的功能有很多种,比如定义索引是否分词,分片和副本的数量是多少等等。
1) 什么是mapping
ES的mapping非常类似于静态语言中的数据类型:声明一个变量为int类型的变量, 以后这个变量都只能存储int类型的数据。同样的, 一个number类型的mapping字段只能存储number类型的数据。
同语言的数据类型相比,mapping还有一些其他的含义,mapping不仅告诉ES一个field中是什么类型的值, 它还告诉ES如何索引数据以及数据是否能被搜索到。
当你的查询没有返回相应的数据, 你的mapping很有可能有问题。当你拿不准的时候, 直接检查你的mapping。
2) 剖析mapping
一个mapping由一个或多个analyzer组成, 一个analyzer又由一个或多个filter组成的。当ES索引文档的时候,它把字段中的内容传递给相应的analyzer,analyzer再传递给各自的filters。
filter的功能很容易理解:一个filter就是一个转换数据的方法, 输入一个字符串,这个方法返回另一个字符串,比如一个将字符串转为小写的方法就是一个filter很好的例子。
一个analyzer由一组顺序排列的filter组成,执行分析的过程就是按顺序一个filter一个filter依次调用, ES存储和索引最后得到的结果。
总结来说, mapping的作用就是执行一系列的指令将输入的数据转成可搜索的索引项。
3)实战转换mapping数据类型
我们使用logstash 传入一个索引,这个时候这个索引加载的为默认mapping,如下

{
- "parking_total": {
- "mappings": {
- "parking_total": {
- "properties": {
- "@timestamp": {
- "type": "date",
- "format": "strict_date_optional_time||epoch_millis"
},
- "@version": {
- "type": "string"
},
- "active": {
- "type": "string"
},
- "host": {
- "type": "string"
},
- "kafka": {
- "properties": {
- "consumer_group": {
- "type": "string"
},
- "msg_size": {
- "type": "long"
},
- "offset": {
- "type": "long"
},
- "partition": {
- "type": "long"
},
- "topic": {
- "type": "string"
}
}
- "consumer_group": {
},
- "properties": {
- "logdate": {
- "type": "string"
},
- "message": {
- "type": "string"
},
- "path": {
- "type": "string"
},
- "total": {
- "type": "string"
},
- "type": {
- "type": "string"
}
}
- "@timestamp": {
}
- "properties": {
}
- "parking_total": {
}
- "mappings": {
}
其中我们就是要修改 total 和 active 这2个字段,修改mapping时需要将索引全部删除。这里我们来操作一下

接下来,我们先创建这个索引的mapping 因为索引没有的时候,mapping也可以存在,其实是删除索引的时候mapping 不会跟着删除的,当然创建的时候,如果有的字段没有定义,mapping 会自动按照默认来定义。
{ "mappings":
{
"parking_total" : {
"properties" : {
"@timestamp" : {
"type" : "date"
},
"message" : {
"type" : "string"
},
"total" : {
"type" : "double"
},
"active" : {
"type" : "double"
}
}
}
}
}
这样在重新导入数据,就成功啦。
by:V
elasticsearch 之mapping的更多相关文章
- curl方式创建elasticsearch的mapping
curl方式创建elasticsearch的mapping curl -XPUT 'http://192.168.1.105:9200/bank/item2/_mapping' -d '{ " ...
- elasticsearch的mapping映射
Mapping简述 Elasticsearch是一个schema-less的系统,但并不代表no shema,而是会尽量根据JSON源数据的基础类型猜测你想要的字段类型映射.Elasticsearch ...
- ELK学习总结(4-1)elasticsearch更改mapping(不停服务重建索引)
elasticsearch更改mapping(不停服务重建索引)原文 http://donlianli.iteye.com/blog/1924721Elasticsearch的mapping一旦创建, ...
- elasticsearch更改mapping(不停服务重建索引)
转载地址:http://donlianli.iteye.com/blog/1924721?utm_source=tuicool&utm_medium=referral Elasticsearc ...
- elasticsearch更改mapping,不停服务重建索引(转)
原文:http://donlianli.iteye.com/blog/1924721?utm_source=tuicool&utm_medium=referral Elasticsearch的 ...
- 通过Java的Domain类构建ElasticSearch的mapping
通过给定一个Java的class类自行创建ElasticSearch的mapping Order的domain类 public class Order { public String system_i ...
- elasticsearch 修改 mapping
Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段.但现实往往并非如此啊,有时增加一个字段,就好像打了一个补丁,一个可以,但是越补越多,最后自己都觉得 ...
- ElasticSearch(5)-Mapping
一.Mapping概述 映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了 ...
- Elasticsearch索引mapping的写入、查看与修改(转)
mapping的写入与查看 首先创建一个索引: curl -XPOST "http://127.0.0.1:9200/productindex" {"acknowledg ...
随机推荐
- 打开eclipse报错
隔了一段时间没用eclipse, 打开之后报错: 从报错上来看是因为java版本太低导致的. 我打开cmd, 运行java -version 后 发现java 版本已经更新到了1.8 然后就有点懵. ...
- ModelMapper 中高级使用 java
ModelMapper 是一个java对象自动映射的第三方架包,用起来很方便,配合阿里的frstjson可以极大简化后台代码. 但是ModelMapper 中文使用说明很少,官网http://mode ...
- MVC之Model转Json
在开发中,有时我们需要在View层中拿到Model返回的数据并且是一个Json对象,那么我们就可以利用Newtonsoft.Json.JsonConvert.SerializeObject(Model ...
- 常用的HTML代码
一.文字1.标题文字 <h#>..........</h#> #=1~6:h1为最大字,h6为最小字 2.字体变化 <font>..........</fon ...
- 使用ActionFilterAttribute进行重定向注意事项
1.分部视图方法不能添加该特性,会报子方法不能重定向操作的错误 2.必须用给filterContext.Result赋值的方法进行重定向,而不能用filterContext.HttpContext.R ...
- [Java 8] (10) 使用Lambda完成函数组合,Map-Reduce以及并行化
好文推荐!!!!! 原文见:http://blog.csdn.net/dm_vincent/article/details/40856569 Java 8中同时存在面向对象编程(OOP)和函数式编程( ...
- AngularJS学习 01进入Angular世界
Angular下载 各个版本的下载地址:https://code.angularjs.org/ 打开上述URL,页面如下图: 点击需要的版本,跳出如下页面: 点击红色框内容即可下载完整的压缩包. 还可 ...
- CSS3 Loading(加载)动画效果
1.html 部分 <div class="spinner"> <div class="rect1"></div> < ...
- 你不知道的CSS背景—css背景属性全解
CSS背景在网页设计中使用频率非常高,然而对于这个开发人员很熟悉的CSS属性,却隐藏着许多不为初级开发人员熟知的细节,这篇文章尝试扒开这层不为人知的面纱. 首先列举一下CSS中关于元素背景的所有属性并 ...
- Ubuntu菜鸟入门(七)—— 微信安装
一.安装git sudo apt-get install git 设置自己的用户名和密码 sudo git config --global user.name "ABC" sudo ...