ElasticSearch
一、基础

type的概念已经被删除。目前用index带代替table的概念。
添加索引要使用PUT:因为要保证幂等性。
向索引中添加数据则要使用POST:因为不需要保证幂等性。
在使用(自定义主键新增)时可以使用_create代替_doc,并且可以使用PUT代替POST,因为主键要唯一,满足幂等性。

在这里,使用“小华”进行搜索,可以将"小",“华”进行拆解,进行搜索。只要满足一个字就能找到。
如果想完全匹配,把“match”换成“match_phrase”
高亮显示使用

在mysql中字段的类型,在es中称作“映射”:
index为false:则无法查询到。
type为keyword:则无法进行拆词,必须要精确匹配。

二、进阶
集群系统架构
1.备份要放到别的节点上,不能和本体放在同一个节点上。
2.查询要把所有节点的数据进行合并,而新增则不需要。所以查询的效率要比新增的效率低。

分片被均匀分配到三个节点上,性能提升了,并且保证本体和备份都不在同一个节点上,保证数据安全

路由计算
决定存储到哪个分片,或者从哪个分片去取(注意:取的话,不一定请求哪个就从哪个里面拿数据,因为可能会出现负载过高,请求会自动转发到其他节点。)


数据写的流程

数据读流程
其中第二步的目的是要保证“负载均衡”。

倒排索引的搜索

文档搜索
倒排索引写入磁盘后不可变,所以大大减小了IO,从而提高效率,
更新:但是如果更新就会重建全部索引,这就很慢了,所以后来引入了“补充索引”,以前的不变,后来的补充上,查找到的数据把以前的版本和新版本合并,引入了“分段”的概念。
删除:由于不可变性,删除也没有办法真正删除,所以首先要进行标记,如.del,从逻辑上标记删除,最终进行合并时,才能知道他是删除了,从而物理删除。
乐观锁、悲观锁
悲观锁是假定有冲突的可能,去锁住数据,防止别的线程进行修改。
乐观锁是假定冲突不会发生,然后根据版本号的方式判定是否可以进行修改

三、SpringData集成ES
初始配置
实体类

配置类


浙公网安备 33010602011771号