一、基本概念
- mysql支持事务,而es不支持事务,所以es中的数据删除后是无法恢复的。
- es没有物理外键这个特性,如果要求数据具有强一致性,建议慎用es。
- mysql复杂存储数据,es负责搜索数据。目前在企业级应用的场景中,es的作用是:先将mysql中的数据同步到es中,以后如果进行查找的话,就查es以提升查询效率;但mysql依然有用,比如增删改的时候,作用的是mysql,编辑完后再同步到es中。所以es并不是用来替换mysql的,而是用来提升查询性能的。
二、核心概念
- 索引(index):es存储数据的地方,类似于mysql中的数据库
- 映射(mapping):mapping定义了每个字段的类型、所用分词器等,类似于mysql中的表结构。
- 文档(document):es中的最小数据单元,常以json的格式显示,类似于mysql中的一行数据。
- 倒排索引:一个倒排索引由文档中所有不重复词的列表构成,里面的每一个词,对应一个包含它的文档id列表。
- 类型(type):一种type指一类表,比如用户表、角色表。在es 7.x中默认type为_doc
- es 5.x中一个index可以有多种type
- es 6.x中一个index只能有一种type
- es 7.x以后,移除了type这个概念,默认为_doc
- 所以es 7.x以后,由于一个index只有一种type,所以理解上可以将其看做对应mysql里的一张表。
三、操作index
可以在postman中进行es的操作
- 添加索引:选择PUT的请求方式,输入url为http://es的ip:端口/create_index 。即可创建一个create_index的索引
- 查询索引:GET
- 删除索引:DELETE
- 关闭索引:POST,并在后面加上 /_close
- 打开索引:POST,并在后面加上 /_open
四、操作映射
- 添加映射
- 查询映射
- 添加字段
- 不支持删除和修改映射
五、es数据类型
es有两种数据类型:简单数据类型、复杂数据类型
1、简单数据类型:
字符串:
- text:会分词,不支持聚合
- keyword:不会分词,支持聚合,将全部内容作为一个词条
数值:long、integer、short、byte、double、float等
布尔:boolean
范围类型: integer_range,float_range,long_range,double_range,date_range等
日期:date
2、复杂数据类型:
- 数组
- 对象
tips:添加文档时,如果不指定id,则只能用POST进行添加操作,而不能用PUT