第4章:Elasticsearch进阶
一、核心概念
1. 索引(Index)
万物皆索引,一切设定都是为了提高搜索的性能
在一个集群中,可以定义任意索引
2. 类型(Type)
不再支持
3. 文档(Document)
一个文档是一个可被索引的基础信息单元,也就是一条数据
4. 字段(Field)
相当于数据表的字段
5. 映射(Mapping)
类似表结构信息
6. 分片(Shards)
允许数据放在不同的节点上统一提供服务。
.
可以理解成分表存储,比如一个索引存放的数据过大,可以把这个索引拆分成两份,分别存储起来。
分片很重要,原因:
- 允许水平分割 / 拓展你的内容容量。
- 允许你在分片之上进行分布式的、并行的操作,进而提升吞吐量
7. 副本(Replicas)
es允许你创建分片的拷贝,这些拷贝叫做复制分片(副本)
8. 分配(Allocation)
将分片分配给某个节点的过程,包括分配主分片或者副本。这个过程是由master节点完成的。
二、系统架构
三. 分布式集群
1. 单节点集群
:整个集群中就一个节点
分配主分片为3,一份副本(每个主分片拥有一个副本分片),共6个
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
}
}
P37操作完还是yello是因为磁盘用的空间超过了百分之85,es自动将副本节点不分配
可以用,这个解除磁盘空间限制↓
PUT http://127.0.0.1:1001/_cluster/settings
{
"transient":{
"cluster.routing.allocation.disk.threshold_enabled":false
}
}
2. 路由计算 & 分片控制
保存数据:将数据路由到分片上:
查询数据,采用轮询
3. 数据写流程
4. 数据读流程
5. 更新流程 & 批量操作流程
更新流程:
6. 分片原理
0. 简述
因为索引数据量太多了以后会影响效率,所以吧一个大的索引拆分成几个部分,一个部分称之为一个分片,所有分片组在一块就是完整索引
每个分片是ES中最小的工作单元
1. 倒排索引
要搜索的时候会将搜索的内容进行分词处理,然后匹配关键字,而不是根据主键进行检索索引,顾名思义就是跟传统索引相反
7. 文档搜索