一、基本概念

  • 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