学了一段时间的Elasticsearch,简称ES,总结下

目录

ES产生背景

ES术语

ES类型支持

ES锁机制

ES端口

ES索引原理


ES产生背景

    总所周知,多数公司数据一般存在Mysql上,检索直接再数据库查询,数据库的数据量达到一定量时,检索效率降低,于是引入es。ES是文档型数据库,属非关系型数据库。典型应用场景1.搜索引擎;2.日志分析。

ES术语

  • 集群:一个集群包含一个或多个分配了相同的集群名称的节点。每个集群都有一个主节点是集群自动选择产生,并且可以决定如果当前主节点失败,哪些可以替换
  • 索引:索引就是像关系数据库中的“数据库”。通过映射可以定义成多种类型。索引是一个逻辑命名空间映射到一个或多个主要的分片,可以有零个或多个副本分片
  • 文档:一个document是可以被索引信息的基础单元,尽管一个document在物理上是属于index的,但事实上,一个document必须被索引或者分配到一个index里的type。
  • 分片:数据的最小单元块,所有数据均衡的存储在各节点的分片中
  • 类型:一个index可以定义出多个type,一个type是一个逻辑的类别或者分区,并且其语义完全取决于自己,一般而言一个type定义了包含多个fields的documents。

ES类型支持

  • String,包含text和keyword
  • text,可以分词查询
  • long
  • integer
  • short
  • bouble
  • float
  • boolean
  • date
  • binary
  • 复杂类型:地理纬度类型

ES锁机制

多个用户访问同一资源的并发问题,引入锁机制

加锁机制:悲观锁和乐观锁

悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操作。

乐观锁:假设不会发生冲突,只在提交操作时检查是否违反数据完整性。

实现乐观锁的两种方式 :

内部版本控制:_version自增长,修改数据后,自动加1

外部版本控制:使用version_type=external检查数据当前的version值是否小于请求中的version值

ES端口

9300:ES数据节点之间的通信端口号,采用TCP协议

9200:ES外部通讯端口号,暴露ES Restful接口

ES索引原理

基于倒排索引

通俗解释:传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置。

而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表即为倒排索引。

有了倒排索引,就能实现o(1)时间复杂度的效率检索文章了,极大的提高了检索效率。