- 引言思考
在这篇博客中,我们谈一下es的映射,es中为什么要存在映射?以及它起到的作用,需不需要重视它的应用,与其它类似产品有没有这种概念?这些都是我们在学习一个新概念时应有的思路,下面我先说一下自己的理解。
mapping感觉是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好?和建立表结构表关系数据库三范式类似。
在刚刚接触es的时候很多资料教程都不会直接上来先建立mapping映射,都是从一些示例入手很容易理解,那时没有建立映射es也是可以工作的,说明es很多地方都是有默认设置的,如果我们不设置字段类型那么将走默认类型。
- 映射的新建、修改、删除
让我们先来建一个library01的索引,然后再该索引上面添加映射,其它也可以在建立索引时同时初始化映射关系,先建后建都是一样的。
如上面library01是我新建的索引,从右侧可以看出来它的mapping映射是空值,我们并没有建映射,在library01中新建映射 如
已经为索引建立了映射,可以用上图中get命令查看各种索引,可以从一个索引中查看某个或某几个类型的映射,也可以查看集群中所有或指定类型索引,用起来还是很方便的。
新建完还可以删除映射,通过这些命令:
最后就是更新操作了,其它更新操作还是比较麻烦的,es中想要给一个已经建好映射的索引改变映射结果,即使改变一个字段类型都是不支持的,需要重新建立索引以及映射结构,然后把以前的数据导入到新建的索引结构中去,完成改变映射结构的目的。
步骤:
1.给已有的索引定一个别名,并指向该别名
2.新建一个新的索引,新的映射结构
3.将别名指向新的索引,取消旧的索引与别名之间的关联
通过这几部即可达到重新改变映射结构的内容,例如我们想改变library01的映射中price字段的类型由现有的double变为integer类型。
从上面图中可以看出来price 类型已经是integer类型了,客户端不需要知道变化也不需要停止es服务,在必要的时候可以使用这个方法。
在映射中会有很多es关键字其它还是需要了解一下,不必死记,用熟了自然而然就知道了给大家贴一下
总结:
通过上面示例知道了如何为es建立映射,建立好后以后我们就可以添加数据,处理数据了,最终的工作我们都是为了高效的查询es数据,es的核心也是分布式实时来查询、分析数据的。
生活、工作、学习都需要我们有个计划,有个规划,这样才能微笑生活。